-
okay today we will discuss about plan
-
macros okay so his plan macros you can
-
think of it as a reusable component in
-
your Splunk search where suppose a
-
particular search portion if it is using
-
if you are using many times mmm then you
-
can put it in a macro so that you can
-
call that micro and the macro will be
-
replaced runtime with that search string
-
okay so macros are very very useful when
-
suppose you have many dashboards in your
-
application and in all this - but you
-
have some search which is running in all
-
the - boots right so in this case you
-
can implement that such portion in a
-
macro where you can just call that macro
-
instead of this whole search string in
-
your dashboards so in the future if you
-
want to do any changes in that search
-
logic you will just change into the into
-
one place in that in macro body okay so
-
so by implementing macro basically we
-
are achieving two things one is the
-
modularity of your code easily
-
maintaining of your code and as well as
-
your search string will be very much
-
smaller okay so there are there are
-
couple - two different types of macro we
-
generally deals with one is eval based
-
macro and there is no an evil based
-
macro so before we discuss those things
-
let me show you the data I have it here
-
so I have some people name and their
-
basic salary and and variable percent so
-
I'll show you to how to create evil
-
waste macro how to create non evil West
-
Metro and what are the differences
-
between them and and then how to call
-
macarons at a macro also we will try to
-
discuss that one okay so first let us
-
see how we can create a non evil macro
-
so now an evil macro and honorable macro
-
if you see functionality-wise both are
-
same so when we define a macro the macro
-
body you are giving this string right so
-
dynamically in the run time
-
macro will be definite will be replaced
-
by that macro body by spelling search
-
okay now when we talk about evil waste
-
macro it is expected that the macro is
-
returning a string when you use non evil
-
waste macro you can directly put the
-
search string inside the macro so let me
-
show you suppose I wanted to calculate
-
total salary based on this formula
-
called basic salary let me show you
-
basic salary plus basic into that
-
percentage variable percentage variable
-
percent okay so to do that to create any
-
macro from the Splunk uy this is how you
-
do it we'll go to settings we go to
-
advanced search okay from there if you
-
see there is a option called such Mac
-
rooms you go there you select your app
-
from there so I'll be creating this
-
matter in my tmdb app so I have selected
-
tmdb over here then new search macro
-
okay if you see the destination I've
-
already selected as TM GB I'll give it a
-
name let's say total salary okay so now
-
whether a macro is evil waste or not
-
determined by this check box if you
-
check this one it will be well waste
-
macro if you don't just check this one
-
it will be a non evil West macro so the
-
first we will discuss about non evil
-
missed macro so what I am trying to say
-
is when you what I said is whenever we
-
are creating a non evil West micro we
-
can directly give a search string over
-
there so my search team will be
-
something like this I will be creating a
-
new field called total salary so that's
-
why that evil total salary equals to now
-
I will be passing this to my basic
-
salary and variable percent to this
-
macro right row do that what I will do
-
I'll create a argument of this macro
-
in basic salary so in the argument
-
section you will be giving control see
-
these two things basic salary and
-
variable percent as two arguments as the
-
macro has two arguments it is mandatory
-
that in this name section you give how
-
many number of arguments you have in
-
your macro if it is one you have to give
-
one here okay now the formula is my
-
basic salary now this basic salary is my
-
input variable right so to access input
-
variable you access like this just like
-
it token okay basic salary plus my basic
-
salary into that variable percent again
-
as input I am accessing right then
-
divide it by 100 so this will be minus
-
macro body now there is a two options
-
for validation expression interrogation
-
error message I will show you in the
-
next macro see if I save it okay
-
so if you see the macro has been created
-
now if I call this macro over here so to
-
call a macro this is how you call there
-
is a tick mark if you see okay from your
-
keyboard then the macro name total
-
salary and it has two arguments right my
-
basic salary and my variable percent
-
then tick end now this basic salary is
-
corresponds to this basic salary and
-
variable person corresponds to this
-
variable person failed
-
now when you define the macro I have
-
given the same name as macro input you
-
can give any any input variable name
-
over here the same name you have to use
-
over here as well but when you pass a
-
macro pass this visix ready and variable
-
person to this macro you'll be giving
-
this field name only
-
so let us run it and see what's going on
-
if you see it has created a total salary
-
failed with this formal output 4000 plus
-
4000 into 15% is 4,600 right so it is
-
basically same as the run time what is
-
happening is something like this so if I
-
instead of total salary if I just gave
-
this one and instead of this token
-
variable I just give my flake name here
-
the output will be same variable percent
-
the output will be same so this is how
-
what is happening as well so run time
-
Splunk is replacing this macro body with
-
this variable inputs and then it is
-
running the query so ultimately this
-
squad is getting run okay so but the
-
thing is this this code if you put it in
-
a macro you can call that macro anybody
-
new such so that means that this code
-
portions will be reusable now okay now
-
let's see an example where we can use
-
this validation expression and
-
validation error message now a
-
validation expression is used when you
-
want to do some kind of validation on
-
your macro inputs okay so and validation
-
error message means when this input is
-
getting or this validation is getting
-
filled this error message will be
-
displayed over there so to do that what
-
I will do is I'll create another macro
-
okay so now let's say we have basic
-
salary and variable percent right let's
-
say we want to calculate a bonus
-
percentage with this formula called
-
variable percent variable percent plus
-
any any of the person any number let's
-
say seven percent or eight in a number
-
I'll provide inputs it will give me it
-
will add those two percentage value and
-
give me the bonus percent okay so to do
-
that I will just create that similar
-
macro name bonus
-
okay so the formula will be again it
-
will be non evil based okay eval bonus
-
equals two so my variable percent right
-
I have to provide as a input so I'll
-
giving input so let's say this time I
-
will rename this to something maybe so
-
I'll say dollar VP dollar then plus
-
another input I will be giving let's say
-
bonus input okay so this bonus I will be
-
adding here okay Nonna's so we have two
-
inputs that means we have to give two
-
over here now I'll add an expression now
-
I always want this bonus to be in number
-
okay do that i'll so this validation
-
expression has to be a boolean
-
expression or eval okay so if you saw my
-
previous video we we discussed about
-
various evil expressions right and some
-
of the expressions returns bully and the
-
strict like operator or in operator or
-
easy num operator which basically checks
-
whether a particular input is number or
-
not so you will be using is numb over
-
here on this bonus that means I am
-
checking whether whatever I am providing
-
as the input to this bonus variable
-
parameter whether it is number or not if
-
it is not number will I will give this
-
in this output error message bonus must
-
be and number okay
-
so let's save this macro okay now I will
-
call this macro here let it be my total
-
salary macro called as is if I just do
-
control see
-
okay here I'm calling my total salary so
-
to stick the output now after that I'll
-
be calling the bonus macro it's a
-
similar way tick macro named micro
-
inputs one of the inputs will be my
-
variable percent and another another
-
output may be let's say 8 percent I want
-
to add with the variable percent so what
-
will be output in this case it should
-
create a new field called bonus with 15
-
plus 8 20 plus 8 something like this
-
okay if you see you can create you can
-
access different different macros in
-
your whole search okay now let's say I
-
have provided a string here it says test
-
ok what is happening so if you provide
-
this thing here that validation is
-
getting failed we have added over here
-
is numb so that set is giving you this
-
error bonus must be a number so this is
-
how macro input validation works ok let
-
us continue now we will discuss about
-
how to create an eval macro so to do
-
that what we'll do is first let me show
-
you two things if you remember from my
-
previous video we have created a command
-
called gate churners right and that
-
common takes an input with the journal
-
ID and if we are not giving any general
-
idea giving star it will give you all
-
the journal titles right and also we
-
have a we have created a our we have
-
index our data into this main index
-
right so you have another data set
-
called main where we have we're having
-
this salary and this information just
-
now you are working with a data set so
-
suppose there is a requirement that
-
based on certain condition either I need
-
to go with this data set or I need to go
-
with this data set in this type of
-
scenario where dynamically you have to
-
determine which data set to work on or
-
dynamically
-
in which search string to which search
-
things were written that means to
-
assistant to work with eval macros are
-
coming into picture okay so because the
-
main concept behind evil macro is it has
-
to return a string so in that case how
-
we will create is like this let's say
-
new search macro I'll give a name call
-
gate channel or main index okay just
-
like the name just to show you the use
-
case of it so here what I will write I
-
will write it if or case statement
-
really mostly we light a key for case
-
statement for eval based macro so case
-
so that we can have different different
-
condition and based on the condition we
-
will be returning the search string but
-
ultimately if you see we are in the
-
start sitting only at the end of the day
-
so that Splunk will replace that macro
-
with that search string so i'm saying i
-
will provide argument here let's say
-
same same argument name let's say so
-
either i will provide gate channel or i
-
will provide main as my or argument
-
value okay i'll show you how how i
-
provide that one case i am saying my
-
input taller this one dollar is equals
-
to let us say gate channel okay as it is
-
within quotes remember that if this one
-
has to be quotes as well or when you are
-
calling you have to call with this with
-
course i prefer to be like this only so
-
that everything is in your inside your
-
macro only in that case the string I
-
will return is this kind get Jenna star
-
now you have to be very careful over
-
here when you dil Dil with a generating
-
command if you seek it generates a
-
generating comment right thats why this
-
has to be the first command in your
-
search string now for generating comment
-
when you run it if you see there is a
-
bar over here search bar right after
-
that only if I run this command without
-
this word nothing will come up
-
it requires this bar but when you put
-
this gate Jenner star this generating
-
command inside a macro so you put it
-
without the bar so that when you call
-
the macro you will call with bar then
-
macro name I will show you that one as
-
well but that's why I am giving without
-
the bar here this is this has to be very
-
careful with the generating comments
-
because if you put bar inside it will
-
not work now when my input is main ok in
-
that case I will return the string
-
called search index equals two main here
-
also another good thing is when you run
-
index equals two main from your search
-
prompt right you do not need to mention
-
search then index equals two main
-
because that is by default comes up but
-
when you use it in a macro or somewhere
-
else
-
you have to put it like this search then
-
index equals to me okay so this thing I
-
will be returning says my macro has one
-
input so I will be giving one here okay
-
validation we are not doing anything now
-
so let's save it okay this is our third
-
macro so get general or main see if I
-
run this macro now okay so as I said it
-
has a generating comment that's why I am
-
giving a bar over here then my take and
-
then my input let's say I will be giving
-
input s get general I want to know I
-
want to work with the data set to get
-
channel okay so if let's see okay
-
bracket this missing over here save now
-
if you see if I run this macro again it
-
is giving me same because sometimes it's
-
not you don't take the refreshed value
-
so what I will do in this case just copy
-
this code close it Danny taking such
-
Factory unknown search comma
-
and case to see what's going on okay it
-
has to be evil waste macro because it is
-
running a string now right so let's say
-
wait and let it is not okay now if you
-
see if I run this gate general macro so
-
it is giving me this data set where it
-
is running that gate general Starr
-
generating command and giving me this
-
result if I say main in this case it is
-
giving me this data set where I have
-
index my data so this is how you can
-
create a evil waste macro okay so now
-
macro has a diff separate permissions as
-
well if you see from this macro macro
-
list page you can and you can set the
-
permissions as well so currently I will
-
show you I will set this permission as
-
this upon't Li and read I will say
-
everyone and right let's say admin let's
-
do it for all the macros permission so
-
you have to be very careful with the
-
macro permissions as well otherwise any
-
unprivileged user will not be able to
-
run this macro and your dashboard will
-
not show up anything so read/write okay
-
now we have set the permissions of the
-
macro as well now let's see what's going
-
on at the background so I am in my
-
Splunk home I will go to a TC apps tmdb
-
F and I will go to my local folder if
-
you see whenever you creates a macro
-
it's creates a another Khan file called
-
macro scones I will open this file and
-
if you see all different macros we have
-
created its gate separate separate
-
stanza for that macro name and with all
-
the input numbers right and args is the
-
inputs of this macros wait for bonus if
-
you see here for bonus my arguments are
-
VPN bonus like two arguments those are
-
showing up here this
-
the macro definition this is the error
-
message you set it for this macro this
-
is the validation you have set it for
-
this macro and this is evil is telling
-
you whether this macro is well based or
-
not as our last macro get general or
-
main is evil ways that Troy is evil is
-
one for rest of the - macros easy well
-
is zero okay now you can you can call a
-
macro another inside another macro so to
-
do that let's do this exercise where we
-
have created these totals energy right
-
and also bonus
-
so inside total Cirelli we will try to
-
call this bonus one who do that I will
-
do one thing I will clone this total
-
celery macro no I like this let's let's
-
get a new one only it's a total salary
-
total salary
-
yv2
-
version - okay so what I will do it will
-
not be well based macro let's say my
-
previous will be there he well right so
-
it has two arguments basic salary and
-
variable percent right now I'll be
-
adding this bonus as well so bonus
-
requires another extra input called
-
bonus right so I will be adding this as
-
a extra input comma this so my total
-
macro inputs will be three basic salary
-
and variable pay will be he'll be used
-
here and variable pay and bonus will be
-
used in another evil statement which we
-
have which will be a calling in this
-
bonus macro right so in this case I will
-
be calling this bonus macro inside so
-
I'll say this one pipe then my bonus
-
macro bonus macro takes two arguments
-
one is variable percent and another is
-
bonus so variable percent I'll pass and
-
I'll pass this bonus as well so ideally
-
the behavior should be same as we have
-
seen before right so
-
done tick okay so now let's save it okay
-
so total sir I do so before before I do
-
that so let us run our macro so I'll
-
just copy paste that code portion here
-
right so I'll just copy paste this code
-
portion here
-
it's a macro total salary nan okay I
-
think total I am my macro is total 7
-
this mismatch parenthesis okay okay so
-
it has created this one in this new new
-
field in the new search field what I
-
will do is on after this one
-
I will be calling my total salary
-
version 2 macro okay what it is doing
-
the work of both of these 2 bonus and
-
total salary right so total salary
-
version - okay so my tick version 2
-
version 2 requires three arguments one
-
is my basic salary variable percent and
-
the similar person value I will gives 8
-
so that we can at least compare what's
-
the outputs so if I run this one see if
-
it is it is working in the same way
-
where it is getting this bonus field and
-
total salary and if you see the output
-
is same as well
-
15:22 we have given seven here okay
-
let's let's run it with seven only see
-
if you see fifteen twenty two twenty two
-
twenty seventeen ten seventy like this
-
okay so this is how you can call a macro
-
inside another macro as well so if you
-
see here by by by by this structure you
-
can achieve a very complex structure as
-
well and complex structure which which
-
is basically a useable component in
-
Splunk search query okay so this is how
-
you need to know basically to deal with
-
macros and macros are very useful in
-
Splunk because not only it it it gives
-
you the modularity approach but also
-
it's it's is give you the very shorter
-
search string and very readable course
-
as well ok see you in next video