"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[521],{15680:(e,t,n)=>{n.d(t,{xA:()=>m,yg:()=>y});var r=n(96540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),d=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},m=function(e){var t=d(e.components);return r.createElement(p.Provider,{value:t},e.children)},g="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,p=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),g=d(n),u=i,y=g["".concat(p,".").concat(u)]||g[u]||s[u]||a;return n?r.createElement(y,l(l({ref:t},m),{},{components:n})):r.createElement(y,l({ref:t},m))}));function y(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,l=new Array(a);l[0]=u;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[g]="string"==typeof e?e:i,l[1]=o;for(var d=2;d<a;d++)l[d]=n[d];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},79381:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>m,contentTitle:()=>p,default:()=>y,frontMatter:()=>o,metadata:()=>d,toc:()=>g});var r=n(58168),i=n(98587),a=(n(96540),n(15680)),l=["components"],o={id:"graphite",title:"Graphite Emitter"},p=void 0,d={unversionedId:"development/extensions-contrib/graphite",id:"development/extensions-contrib/graphite",title:"Graphite Emitter",description:"\x3c!--",source:"@site/docs/latest/development/extensions-contrib/graphite.md",sourceDirName:"development/extensions-contrib",slug:"/development/extensions-contrib/graphite",permalink:"/docs/latest/development/extensions-contrib/graphite",draft:!1,tags:[],version:"current",frontMatter:{id:"graphite",title:"Graphite Emitter"}},m={},g=[{value:"Introduction",id:"introduction",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Supported event types",id:"supported-event-types",level:3},{value:"Druid to Graphite Event Converter",id:"druid-to-graphite-event-converter",level:3},{value:"Send-All converter",id:"send-all-converter",level:4},{value:"White-list based converter",id:"white-list-based-converter",level:4}],s={toc:g},u="wrapper";function y(e){var t=e.components,n=(0,i.A)(e,l);return(0,a.yg)(u,(0,r.A)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("p",null,"To use this Apache Druid extension, ",(0,a.yg)("a",{parentName:"p",href:"/docs/latest/configuration/extensions#loading-extensions"},"include")," ",(0,a.yg)("inlineCode",{parentName:"p"},"graphite-emitter")," in the extensions load list."),(0,a.yg)("h2",{id:"introduction"},"Introduction"),(0,a.yg)("p",null,"This extension emits druid metrics to a graphite carbon server.\nMetrics can be sent by using ",(0,a.yg)("a",{parentName:"p",href:"http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol"},"plaintext")," or ",(0,a.yg)("a",{parentName:"p",href:"http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-pickle-protocol"},"pickle")," protocol.\nThe pickle protocol is more efficient and supports sending batches of metrics (plaintext protocol send only one metric) in one request; batch size is configurable."),(0,a.yg)("h2",{id:"configuration"},"Configuration"),(0,a.yg)("p",null,"All the configuration parameters for graphite emitter are under ",(0,a.yg)("inlineCode",{parentName:"p"},"druid.emitter.graphite"),"."),(0,a.yg)("table",null,(0,a.yg)("thead",{parentName:"table"},(0,a.yg)("tr",{parentName:"thead"},(0,a.yg)("th",{parentName:"tr",align:null},"property"),(0,a.yg)("th",{parentName:"tr",align:null},"description"),(0,a.yg)("th",{parentName:"tr",align:null},"required?"),(0,a.yg)("th",{parentName:"tr",align:null},"default"))),(0,a.yg)("tbody",{parentName:"table"},(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.hostname")),(0,a.yg)("td",{parentName:"tr",align:null},"The hostname of the graphite server."),(0,a.yg)("td",{parentName:"tr",align:null},"yes"),(0,a.yg)("td",{parentName:"tr",align:null},"none")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.port")),(0,a.yg)("td",{parentName:"tr",align:null},"The port of the graphite server."),(0,a.yg)("td",{parentName:"tr",align:null},"yes"),(0,a.yg)("td",{parentName:"tr",align:null},"none")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.batchSize")),(0,a.yg)("td",{parentName:"tr",align:null},"Number of events to send as one batch (only for pickle protocol)"),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},"100")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.protocol")),(0,a.yg)("td",{parentName:"tr",align:null},"Graphite protocol; available protocols: pickle, plaintext."),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},"pickle")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.eventConverter")),(0,a.yg)("td",{parentName:"tr",align:null},"Filter and converter of druid events to graphite event (please see next section)."),(0,a.yg)("td",{parentName:"tr",align:null},"yes"),(0,a.yg)("td",{parentName:"tr",align:null},"none")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.flushPeriod")),(0,a.yg)("td",{parentName:"tr",align:null},"Queue flushing period in milliseconds."),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},"1 minute")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.maxQueueSize")),(0,a.yg)("td",{parentName:"tr",align:null},"Maximum size of the queue used to buffer events."),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"MAX_INT"))),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.alertEmitters")),(0,a.yg)("td",{parentName:"tr",align:null},"List of emitters where alerts will be forwarded to. This is a JSON list of emitter names, e.g. ",(0,a.yg)("inlineCode",{parentName:"td"},'["logging", "http"]')),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},"empty list (no forwarding)")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.requestLogEmitters")),(0,a.yg)("td",{parentName:"tr",align:null},"List of emitters where request logs (i.e., query logging events sent to emitters when ",(0,a.yg)("inlineCode",{parentName:"td"},"druid.request.logging.type")," is set to ",(0,a.yg)("inlineCode",{parentName:"td"},"emitter"),") will be forwarded to. This is a JSON list of emitter names, e.g. ",(0,a.yg)("inlineCode",{parentName:"td"},'["logging", "http"]')),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},"empty list (no forwarding)")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.emitWaitTime")),(0,a.yg)("td",{parentName:"tr",align:null},"wait time in milliseconds to try to send the event otherwise emitter will throwing event."),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},"0")),(0,a.yg)("tr",{parentName:"tbody"},(0,a.yg)("td",{parentName:"tr",align:null},(0,a.yg)("inlineCode",{parentName:"td"},"druid.emitter.graphite.waitForEventTime")),(0,a.yg)("td",{parentName:"tr",align:null},"waiting time in milliseconds if necessary for an event to become available."),(0,a.yg)("td",{parentName:"tr",align:null},"no"),(0,a.yg)("td",{parentName:"tr",align:null},"1000 (1 sec)")))),(0,a.yg)("h3",{id:"supported-event-types"},"Supported event types"),(0,a.yg)("p",null,"The graphite emitter only emits service metric events to graphite (See ",(0,a.yg)("a",{parentName:"p",href:"/docs/latest/operations/metrics"},"Druid Metrics")," for a list of metrics)."),(0,a.yg)("p",null,"Alerts and request logs are not sent to graphite. These event types are not well represented in Graphite, which is more suited for timeseries views on numeric metrics, vs. storing non-numeric log events."),(0,a.yg)("p",null,"Instead, alerts and request logs are optionally forwarded to other emitter implementations, specified by ",(0,a.yg)("inlineCode",{parentName:"p"},"druid.emitter.graphite.alertEmitters")," and ",(0,a.yg)("inlineCode",{parentName:"p"},"druid.emitter.graphite.requestLogEmitters")," respectively."),(0,a.yg)("h3",{id:"druid-to-graphite-event-converter"},"Druid to Graphite Event Converter"),(0,a.yg)("p",null,"Graphite Event Converter defines a mapping between druid metrics name plus dimensions to a Graphite metric path.\nGraphite metric path is organized using the following schema:\n",(0,a.yg)("inlineCode",{parentName:"p"},"<namespacePrefix>.[<druid service name>].[<druid hostname>].<druid metrics dimensions>.<druid metrics name>"),"\nProperly naming the metrics is critical to avoid conflicts, confusing data and potentially wrong interpretation later on."),(0,a.yg)("p",null,"Example ",(0,a.yg)("inlineCode",{parentName:"p"},"druid.historical.hist-host1_yahoo_com:8080.MyDataSourceName.GroupBy.query/time"),":"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"druid")," -> namespace prefix"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"historical")," -> service name"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"hist-host1.yahoo.com:8080")," -> druid hostname"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"MyDataSourceName")," -> dimension value"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"GroupBy")," -> dimension value"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("inlineCode",{parentName:"li"},"query/time")," -> metric name")),(0,a.yg)("p",null,"We have two different implementation of event converter:"),(0,a.yg)("h4",{id:"send-all-converter"},"Send-All converter"),(0,a.yg)("p",null,"The first implementation called ",(0,a.yg)("inlineCode",{parentName:"p"},"all"),", will send all the druid service metrics events.\nThe path will be in the form ",(0,a.yg)("inlineCode",{parentName:"p"},"<namespacePrefix>.[<druid service name>].[<druid hostname>].<dimensions values ordered by dimension's name>.<metric>"),"\nUser has control of ",(0,a.yg)("inlineCode",{parentName:"p"},"<namespacePrefix>.[<druid service name>].[<druid hostname>].")),(0,a.yg)("p",null,"You can omit the hostname by setting ",(0,a.yg)("inlineCode",{parentName:"p"},"ignoreHostname=true"),"\n",(0,a.yg)("inlineCode",{parentName:"p"},"druid.SERVICE_NAME.dataSourceName.queryType.query/time")),(0,a.yg)("p",null,"You can omit the service name by setting ",(0,a.yg)("inlineCode",{parentName:"p"},"ignoreServiceName=true"),"\n",(0,a.yg)("inlineCode",{parentName:"p"},"druid.HOSTNAME.dataSourceName.queryType.query/time")),(0,a.yg)("p",null,'Elements in metric name by default are separated by "/", so graphite will create all metrics on one level. If you want to have metrics in the tree structure, you have to set ',(0,a.yg)("inlineCode",{parentName:"p"},"replaceSlashWithDot=true"),"\nOriginal: ",(0,a.yg)("inlineCode",{parentName:"p"},"druid.HOSTNAME.dataSourceName.queryType.query/time"),"\nChanged: ",(0,a.yg)("inlineCode",{parentName:"p"},"druid.HOSTNAME.dataSourceName.queryType.query.time")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-json"},'\ndruid.emitter.graphite.eventConverter={"type":"all", "namespacePrefix": "druid.test", "ignoreHostname":true, "ignoreServiceName":true}\n\n')),(0,a.yg)("h4",{id:"white-list-based-converter"},"White-list based converter"),(0,a.yg)("p",null,"The second implementation called ",(0,a.yg)("inlineCode",{parentName:"p"},"whiteList"),", will send only the white listed metrics and dimensions.\nSame as for the ",(0,a.yg)("inlineCode",{parentName:"p"},"all")," converter user has control of ",(0,a.yg)("inlineCode",{parentName:"p"},"<namespacePrefix>.[<druid service name>].[<druid hostname>]."),"\nWhite-list based converter comes with the following  default white list map located under resources in ",(0,a.yg)("inlineCode",{parentName:"p"},"./src/main/resources/defaultWhiteListMap.json")),(0,a.yg)("p",null,"Although user can override the default white list map by supplying a property called ",(0,a.yg)("inlineCode",{parentName:"p"},"mapPath"),".\nThis property is a String containing the path for the file containing ",(0,a.yg)("strong",{parentName:"p"},"white list map JSON object"),".\nFor example the following converter will read the map from the file ",(0,a.yg)("inlineCode",{parentName:"p"},"/pathPrefix/fileName.json"),"."),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-json"},'\ndruid.emitter.graphite.eventConverter={"type":"whiteList", "namespacePrefix": "druid.test", "ignoreHostname":true, "ignoreServiceName":true, "mapPath":"/pathPrefix/fileName.json"}\n\n')),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Druid emits a huge number of metrics we highly recommend to use the ",(0,a.yg)("inlineCode",{parentName:"strong"},"whiteList")," converter")))}y.isMDXComponent=!0}}]);