Update | Questions & Verified Answers | 100% Correct |
Grade A | Pass Guaranteed - A+ Graded
Section 1: Advanced Templating & Macro Management
Q1: You've got a host that's inheriting the same macro from three places: a global macro
{$SNMP.COMMUNITY} set to "public", a template macro on "Template Network Generic"
set to "community1", and a host-level macro set to "secure_snmp_v3". When the Zabbix
server evaluates an SNMP item, which value actually gets used?
A. "public" because global macros always take precedence
B. "community1" because template macros override everything else
C. "secure_snmp_v3" because host macros have the highest priority [CORRECT]
D. The server throws an error because of macro conflicts
Correct Answer: C
Rationale: In a real production environment, Zabbix resolves macro precedence from
most specific to least specific: host macros win over template macros, which win over
global macros. That's the pattern that scales best when you need to override defaults at
the host level without touching your template library.
Q2: You're building a template hierarchy where "Template Linux Base" provides the
foundation, "Template Linux Web Server" inherits from it and adds HTTP checks, and
"Template Production Web" inherits from the web server template and tightens trigger
thresholds. A user macro {$HTTP.PORT} is defined differently in all three. Which value
does the final host see?
,A. The value from "Template Linux Base" because it's the oldest in the chain
B. The value from "Template Linux Web Server" because it's the middle template
C. The value from "Template Production Web" because child templates override parent
templates [CORRECT]
D. Zabbix concatenates all three values with commas
Correct Answer: C
Rationale: Template inheritance works like object-oriented programming—child
templates override parent definitions. The cleanest automation approach is building
these hierarchies so your most specific template at the end of the chain controls the
final values.
Q3: You need to create a macro that calculates 80% of another macro's value for
dynamic thresholds. Which syntax correctly implements this user macro function?
A. {$THRESHOLD}.percent(80)
B. {$THRESHOLD}.percent()
C. {{$THRESHOLD}.percent(80)} [CORRECT]
D. {$THRESHOLD} * 0.8
Correct Answer: C
Rationale: Zabbix macro functions require the double curly brace syntax for
evaluation—{{$MACRO}.function(params)}. In a real production environment you'd
use this for calculated thresholds like {{$MAX.MEMORY}.percent(80)} to
auto-adjust based on host capabilities.
Q4: Your organization has 12 different SNMP community strings across network
segments. You want to define these once and have templates automatically select the
right one based on host groups. What's the most maintainable approach?
, A. Create 12 separate templates that are identical except for the macro value
B. Define user macros on host groups and let templates reference
{$SNMP.COMMUNITY} [CORRECT]
C. Hardcode community strings directly in every item prototype
D. Use global macros with a comma-separated list of all communities
Correct Answer: B
Rationale: That's the pattern that scales best—put the varying values at the host group
level where your organizational logic lives, keep templates generic with
{$SNMP.COMMUNITY}, and let Zabbix resolve the right value based on group
membership. You update it in one place when strings rotate.
Q5: You're troubleshooting why a trigger expression isn't firing. The expression uses
{$CRIT.LOAD} but the host shows a different value than what you set in the template.
Where should you check first?
A. The Zabbix server configuration file for macro cache settings
B. Whether the host has a local macro overriding the template value [CORRECT]
C. The database table globalmacro for corruption
D. The item history table for calculation errors
Correct Answer: B
Rationale: In real deployments, 90% of "wrong macro value" issues come from someone
setting a host-level macro months ago and forgetting about it. Always check host
macros first—they silently override templates. The template macro might be perfect, but
the host doesn't care.
Q6: You need to reference a discovered interface name in a trigger prototype name.
Which macro syntax is correct?