All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.450c3c73-8700.231c7e4587d01e439c8c.js Maven / Gradle / Ivy

There is a newer version: 6.0.5
Show newest version
"use strict";(self.webpackChunkgraylog_web_interface=self.webpackChunkgraylog_web_interface||[]).push([["450c3c73-8700"],{pLLmkYy5:(e,t,n)=>{n.d(t,{Z:()=>m});var r=n("Z7aTuO5B"),l=n("J6y4/h8P"),s=n("F9olzlTR"),i=n("EeAwn/0x"),a=n("0zTRKSqx"),o=n("XR6lEGGZ");const c=(0,l.default)(s.Si).withConfig({displayName:"PageNavigation__Container",componentId:"sc-1if5i40-0"})(["margin-bottom:10px;"]),u=(0,l.default)(s.zx).withConfig({displayName:"PageNavigation__StyledButton",componentId:"sc-1if5i40-1"})((e=>{let{theme:t}=e;return(0,l.css)(["font-family:",";font-size:",";&&&&{color:",";:hover,:focus{text-decoration:none;}:hover{","}&.active{color:",";"," :hover,:focus{","}}}"],t.fonts.family.navigation,t.fonts.size.navigation,t.colors.variant.darker.default,(0,o.RF)(t),t.colors.global.textDefault,(0,o.A7)(t),(0,o.A7)(t))}));u.displayName="Button";const m=e=>{let{items:t}=e;return r.createElement(c,null,t.map((e=>{let{path:t,title:n,permissions:l,exactPathMatch:s}=e;return t?r.createElement(a.AE,{permissions:null!=l?l:[],key:t},r.createElement(i.J,{to:t,relativeActive:!s},r.createElement(u,{bsStyle:"link"},r.createElement(o.ZP,null,n)))):null})))}},MOgDWHS8:(e,t,n)=>{n.d(t,{Z:()=>o});var r=n("Z7aTuO5B"),l=n("pLLmkYy5"),s=n("DeVaSktS"),i=n("F9olzlTR");const a=[{title:"Manage pipelines",path:s.ZP.SYSTEM.PIPELINES.OVERVIEW,exactPathMatch:!0},{title:"Manage rules",path:s.ZP.SYSTEM.PIPELINES.RULES},{title:"Simulator",path:s.ZP.SYSTEM.PIPELINES.SIMULATOR}],o=()=>r.createElement(i.X2,null,r.createElement(l.Z,{items:a}))},Iw2FNJN9:(e,t,n)=>{n.r(t),n.d(t,{default:()=>F});var r=n("Z7aTuO5B"),l=n("J6y4/h8P"),s=n("MOgDWHS8"),i=n("4Js8dUPg"),a=n("EeAwn/0x"),o=n("F9olzlTR"),c=n("0zTRKSqx"),u=n("ii0bleBb"),m=n.n(u),d=n("Y1Txt3Ie"),p=n("DeVaSktS"),g=n("L040zqI6");const h=l.default.td.withConfig({displayName:"RuleListEntry__LimitedTd",componentId:"sc-1m96wya-0"})((e=>{let{theme:t}=e;return(0,l.css)(["max-width:250px;min-width:250px;@media screen and (max-width:","){white-space:normal !important;}"],t.breakpoints.max.md)})),f=e=>{let{rule:t,onDelete:n,usingPipelines:l}=e;const{id:s,title:i,description:u,created_at:m,modified_at:f}=t,E=l.length,C=r.createElement(o.Si,null,r.createElement(a.J,{to:p.ZP.SYSTEM.PIPELINES.RULE(s)},r.createElement(o.zx,{bsSize:"xsmall"},"Edit")),r.createElement(o.zx,{bsStyle:"danger",bsSize:"xsmall",onClick:n(t),title:"Delete rule"},"Delete"));return r.createElement("tr",{key:i},r.createElement("td",null,r.createElement(a.r,{to:p.ZP.SYSTEM.PIPELINES.RULE(s)},i)),r.createElement("td",{className:"limited"},u),r.createElement("td",{className:"limited"},r.createElement(c.ij,{dateTime:m})),r.createElement("td",{className:"limited"},r.createElement(c.ij,{dateTime:f})),r.createElement("td",null,r.createElement(d.CL,{name:`org.graylog.plugins.pipelineprocessor.ast.Rule.${s}.executed`,zeroOnMissing:!0},r.createElement(d.qb,{suffix:"msg/s"}))),r.createElement("td",null,r.createElement(d.CL,{name:`org.graylog.plugins.pipelineprocessor.ast.Rule.${s}.failed`},r.createElement(d.qb,{showTotal:!0,suffix:"errors/s",hideOnMissing:!0}))),r.createElement(h,null,r.createElement(c.Z2,null,E)," ",l.map(((e,t)=>{let{id:n,title:l}=e;const i=r.createElement(o.u,{id:`${s}${n}`,show:!0},l);return r.createElement(r.Fragment,{key:n},l.length>30?r.createElement(c.Ox,{placement:"top",trigger:"hover",overlay:i,rootClose:!0},r.createElement(a.r,{to:p.ZP.SYSTEM.PIPELINES.PIPELINE(n)},g.Z.truncateWithEllipses(l,30))):r.createElement(a.r,{to:p.ZP.SYSTEM.PIPELINES.PIPELINE(n)},l),tr.createElement("th",null,e))),E(this,"_ruleInfoFormatter",(e=>{const{onDelete:t,rulesContext:{used_in_pipelines:n}={}}=this.props;return r.createElement(f,{key:e.id,rule:e,usingPipelines:n[e.id],onDelete:t})}))}render(){const{rules:e,searchFilter:t}=this.props;return r.createElement(c.wQ,{id:"rule-list",className:"table-hover",headers:["Title","Description","Created","Last modified","Throughput","Errors","Pipelines","Actions"],headerCellFormatter:this._headerCellFormatter,sortByKey:"title",rows:e,customFilter:t,dataRowFormatter:this._ruleInfoFormatter,filterKeys:[]})}}E(C,"propTypes",{rules:m().array.isRequired,rulesContext:m().exact({used_in_pipelines:m().objectOf(m().any)}),onDelete:m().func.isRequired,searchFilter:m().node.isRequired}),E(C,"defaultProps",{rulesContext:void 0});const y=C;var P=n("b/6pmtOr"),S=n("0I+u03RB"),R=n("nHcjWeCO"),b=n.n(R),x=n("YyiN4DLW");function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class D extends r.Component{constructor(e){super(e),Z(this,"saveConfiguration",(()=>{const{onChange:e}=this.props,{nextConfig:t}=this.state;e(t).then(this.closeModal)})),Z(this,"openModal",(()=>{this.modal.open()})),Z(this,"closeModal",(()=>{this.modal.close()})),Z(this,"propagateChange",((e,t)=>{const{config:n}=this.props,r=b().cloneDeep(n);r[e]=t,this.setState({nextConfig:r})})),Z(this,"handleChange",(e=>{const{name:t}=e.target;this.propagateChange(t,x.n6(e.target))})),this.state={nextConfig:e.config}}render(){const{config:e,onClose:t}=this.props,{nextConfig:n}=this.state;return e?r.createElement(o.K$,{ref:e=>{this.modal=e},title:"Rule Metrics Configuration",onSubmitForm:this.saveConfiguration,onModalClose:t,show:!0,submitButtonText:"Update configuration"},r.createElement(o.bZ,{bsStyle:"warning"},"Rule metrics should only be enabled to debug a performance issue because collecting the metrics will slow down message processing and increase memory usage."),r.createElement("fieldset",null,r.createElement(o.II,{type:"radio",id:"metrics-enabled",name:"metrics_enabled",value:"true",label:"Enable rule metrics",onChange:this.handleChange,checked:n.metrics_enabled}),r.createElement(o.II,{type:"radio",id:"metrics-disabled",name:"metrics_enabled",value:"false",label:"Disable rule metrics",onChange:this.handleChange,checked:!n.metrics_enabled})),r.createElement("p",null,"When enabled the system metrics will update two timers for every rule execution."),r.createElement("strong",null,"Rule evaluation timer"),r.createElement("p",null,"This timer measures the duration for the rule condition. (everything inside the ",r.createElement("code",null,"when")," statement)"),r.createElement("p",null,"Example metric name with rule ID placeholder:",r.createElement("br",null),r.createElement("code",null,"org.graylog.plugins.pipelineprocessor.ast.Rule.[rule-id].trace.evaluate.duration"),r.createElement("br",null),"Example metric name with rule ID, pipeline ID and stage number placeholders:",r.createElement("br",null),r.createElement("code",null,"org.graylog.plugins.pipelineprocessor.ast.Rule.[rule-id].[pipeline-id].[stage-num].trace.evaluate.duration")),r.createElement("strong",null,"Rule execution timer"),r.createElement("p",null,"This timer measures the duration for the rule execution. (everything inside the ",r.createElement("code",null,"then")," statement)"),r.createElement("p",null,"Example metric name with rule ID placeholder:",r.createElement("br",null),r.createElement("code",null,"org.graylog.plugins.pipelineprocessor.ast.Rule.[rule-id].trace.execute.duration"),r.createElement("br",null),"Example metric name with rule ID, pipeline ID and stage number placeholders:",r.createElement("br",null),r.createElement("code",null,"org.graylog.plugins.pipelineprocessor.ast.Rule.[rule-id].[pipeline-id].[stage-num].trace.execute.duration"))):r.createElement("p",null,r.createElement(c.$j,{text:"Loading metrics config..."}))}}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Z(D,"propTypes",{config:m().object,onChange:m().func.isRequired,onClose:m().func}),Z(D,"defaultProps",{config:void 0,onClose:()=>{}});class v extends r.Component{constructor(){super(...arguments),w(this,"handleChange",(e=>S.W.updateMetricsConfig(e)))}componentDidMount(){S.W.loadMetricsConfig()}render(){const{metricsConfig:e,onClose:t}=this.props;return e?r.createElement(D,{ref:e=>{this.configComponent=e},config:e,onChange:this.handleChange,onClose:t}):null}}w(v,"propTypes",{metricsConfig:m().object,onClose:m().func}),w(v,"defaultProps",{metricsConfig:void 0,onClose:()=>{}});const I=(0,P.Z)(v,{rules:S.G},(e=>{let{rules:t}=e;return{metricsConfig:t?t.metricsConfig:t}}));var T=n("UPjNKhGS"),_=n("3kMHuq+3");const M=l.default.div.withConfig({displayName:"RulesPage__Flex",componentId:"sc-18qw4k9-0"})(["display:flex;"]),L=l.default.div.withConfig({displayName:"RulesPage__SpinnerWrapper",componentId:"sc-18qw4k9-1"})((e=>{let{theme:t}=e;return(0,l.css)(["font-size:",";padding:"," ",";"],t.fonts.size.h3,t.spacings.xxs,t.spacings.sm)})),N=(e,t,n)=>{t(!0),S.W.listPaginated(e).then((e=>{n(e),t(!1)}))},k=e=>{S.W.loadMetricsConfig().then((t=>{e(t)}))},F=()=>{const{page:e,pageSize:t,resetPage:n,setPage:l}=(0,_.ZP)(),[u,m]=(0,r.useState)(""),[d,g]=(0,r.useState)(!1),[h,f]=(0,r.useState)(!1),[E,C]=(0,r.useState)(),[P,R]=(0,r.useState)(),{list:b,pagination:{total:x=0,count:Z=0}={},context:D}=null!=P?P:{};(0,r.useEffect)((()=>{N({query:u,page:e,perPage:t},g,R)}),[u,e,t]),(0,r.useEffect)((()=>{k(C)}),[]);const w=e=>{n(),m(e)},v=()=>r.createElement(o.Si,{className:"pull-right"},r.createElement(a.J,{to:p.ZP.SYSTEM.PIPELINES.RULE("new")},r.createElement(o.zx,{bsStyle:"success"},"Create Rule")),E&&E.metrics_enabled?r.createElement(o.zx,{bsStyle:"warning",onClick:f},"Debug Metrics: ON"):r.createElement(o.zx,{onClick:f},"Debug Metrics")),F=!b,q=r.createElement(M,null,r.createElement(c.UI,{query:u,onSearch:w,queryWidth:400,queryHelpComponent:r.createElement(c.y8,{entityName:"Pipeline Rule"}),wrapperClass:"has-bm",onReset:()=>w(""),topMargin:0}),d&&r.createElement(L,null,r.createElement(c.$j,{text:"",delay:0})));return r.createElement(c.$4,{title:"Pipeline rules"},r.createElement(s.Z,null),r.createElement(c.mr,{title:"Pipeline Rules",actions:r.createElement(v,null),documentationLink:{title:"Pipeline rules documentation",path:i.Z.PAGES.PIPELINE_RULES}},r.createElement("span",null,"Rules are a way of applying changes to messages in Graylog. A rule consists of a condition and a list of actions. Graylog evaluates the condition against a message and executes the actions if the condition is satisfied.")),r.createElement(o.X2,{className:"content"},r.createElement(o.JX,{md:12},F?r.createElement(c.$j,null):r.createElement(o.X2,null,r.createElement(o.JX,{md:12},r.createElement(c.l9,{totalItems:x},r.createElement(y,{rules:b,rulesContext:D,onDelete:n=>()=>{window.confirm(`Do you really want to delete rule "${n.title}"?`)&&S.W.delete(n).then((()=>{Z>1?N({query:u,page:e,perPage:t},g,R):l(Math.max(T._.page,e-1))}))},searchFilter:q}),h&&r.createElement(I,{onClose:()=>{k(C),f(!1)}})))))))}},UPjNKhGS:(e,t,n)=>{n.d(t,{_:()=>r});const r={page:1,perPage:10,query:""}},"0I+u03RB":(e,t,n)=>{n.d(t,{G:()=>p,W:()=>d});var r=n("JnTtTRmZ"),l=n.n(r),s=n("6n4dw8v3"),i=n("4af3+9mh"),a=n("0wQfx7YJ"),o=n("4sldgQy6"),c=n("rkoyttmq"),u=n("OqsMdpSm"),m=n("xc00RsLr");const d=(0,m.ei)("core.Rules",(()=>l().createActions({delete:{asyncResult:!0},list:{asyncResult:!0},get:{asyncResult:!0},save:{asyncResult:!0},update:{asyncResult:!0},parse:{asyncResult:!0},multiple:{asyncResult:!0},loadFunctions:{asyncResult:!0},loadMetricsConfig:{asyncResult:!0},updateMetricsConfig:{asyncResult:!0},listPaginated:{asyncResult:!0}}))),p=(0,m.dS)("core.Rules",(()=>l().createStore({listenables:[d],rules:void 0,rulesContext:void 0,functionDescriptors:void 0,metricsConfig:void 0,getInitialState(){return{rules:this.rules,rulesContext:this.rulesContext,functionDescriptors:this.functionDescriptors,metricsConfig:this.metricsConfig}},_updateRulesState(e){if(this.rules){this.rules.some((t=>t.id===e.id))?this.rules=this.rules.map((t=>t.id===e.id?e:t)):this.rules.push(e)}else this.rules=[e];this.trigger({rules:this.rules,functionDescriptors:this.functionDescriptors})},_updateFunctionDescriptors(e){e&&(this.functionDescriptors=e.sort(((e,t)=>(0,s.S)(e.name,t.name)))),this.trigger({rules:this.rules,functionDescriptors:this.functionDescriptors})},list(){const e=(0,a.DC)(c.Z.RulesController.list().url);return(0,u.ZP)("GET",e).then((e=>{this.rules=e,this.trigger({rules:e,functionDescriptors:this.functionDescriptors})}),(e=>{i.Z.error(`Fetching rules failed with status: ${e.message}`,"Could not retrieve processing rules")}))},listPaginated(e){let{page:t,perPage:n,query:r}=e;const l=(0,o.Z)(c.Z.RulesController.paginatedList().url,t,n,r),s=(0,u.ZP)("GET",(0,a.DC)(l)).then((e=>({list:e.rules,context:e.context,pagination:{count:e.count,total:e.total,page:e.page,perPage:e.per_page,query:e.query}})),(e=>{e.additional&&404===e.additional.status||i.Z.error(`Loading rules list failed with status: ${e}`,"Could not load rules.")}));return d.listPaginated.promise(s),s},get(e){const t=(0,a.DC)(c.Z.RulesController.get(e).url),n=(0,u.ZP)("GET",t);return n.then(this._updateRulesState,(t=>{i.Z.error(`Fetching rule "${e}" failed with status: ${t.message}`,`Could not retrieve processing rule "${e}"`)})),d.get.promise(n),n},save(e){const t=(0,a.DC)(c.Z.RulesController.create().url),n={title:e.title,description:e.description,source:e.source},r=(0,u.ZP)("POST",t,n);return r.then((e=>(this._updateRulesState(e),i.Z.success(`Rule "${e.title}" created successfully`),e)),(t=>{i.Z.error(`Saving rule "${e.title}" failed with status: ${t.message}`,`Could not save processing rule "${e.title}"`)})),d.save.promise(r),r},update(e){const t=(0,a.DC)(c.Z.RulesController.update(e.id).url),n={id:e.id,title:e.title,description:e.description,source:e.source},r=(0,u.ZP)("PUT",t,n);return r.then((e=>(this._updateRulesState(e),i.Z.success(`Rule "${e.title}" updated successfully`),e)),(t=>{i.Z.error(`Updating rule "${e.title}" failed with status: ${t.message}`,`Could not update processing rule "${e.title}"`)})),d.update.promise(r),r},delete(e){const t=(0,a.DC)(c.Z.RulesController.delete(e.id).url),n=(0,u.ZP)("DELETE",t).then((()=>{this.rules=this.rules.filter((t=>t.id!==e.id)),this.trigger({rules:this.rules,functionDescriptors:this.functionDescriptors}),i.Z.success(`Rule "${e.title}" was deleted successfully`)}),(t=>{i.Z.error(`Deleting rule "${e.title}" failed with status: ${t.message}`,`Could not delete processing rule "${e.title}"`)}));return d.delete.promise(n),n},parse(e,t){const n=(0,a.DC)(c.Z.RulesController.parse().url),r={title:e.title,description:e.description,source:e.source};return(0,u.ZP)("POST",n,r).then((e=>(t([]),e)),(e=>{400===e.status&&t(e.additional.body)}))},multiple(e,t){const n=(0,a.DC)(c.Z.RulesController.multiple().url),r=(0,u.ZP)("POST",n,{rules:e});return r.then(t),r},loadFunctions(){if(this.functionDescriptors)return;const e=(0,a.DC)(c.Z.RulesController.functions().url);return(0,u.ZP)("GET",e).then(this._updateFunctionDescriptors)},loadMetricsConfig(){const e=(0,a.DC)(c.Z.RulesController.metricsConfig().url),t=(0,u.ZP)("GET",e);t.then((e=>{this.metricsConfig=e,this.trigger({rules:this.rules,functionDescriptors:this.functionDescriptors,metricsConfig:this.metricsConfig})}),(e=>{i.Z.error(`Couldn't load rule metrics config: ${e.message}`,"Couldn't load rule metrics config")})),d.loadMetricsConfig.promise(t)},updateMetricsConfig(e){const t=(0,a.DC)(c.Z.RulesController.metricsConfig().url),n=(0,u.ZP)("PUT",t,e);n.then((e=>{this.metricsConfig=e,this.trigger({rules:this.rules,functionDescriptors:this.functionDescriptors,metricsConfig:this.metricsConfig}),i.Z.success("Successfully updated rule metrics config")}),(e=>{i.Z.error(`Couldn't update rule metrics config: ${e.message}`,"Couldn't update rule metrics config")})),d.updateMetricsConfig.promise(n)}})))}}]);
//# sourceMappingURL=450c3c73-8700.231c7e4587d01e439c8c.js.map




© 2015 - 2024 Weber Informatics LLC | Privacy Policy