API референца¶
За већину корисника, пример скрипти из водича кроз подешавање ће бити сасвим довољан. Али ако желите прецизнију контролу—на пример, да отварате тикете високог и ниског приоритета за различите типове системских догађаја—онда ћете морати да прилагодите податке које те скрипте шаљу Zammad-у.
Пример¶
Ова прилагођена скрипта ће аутоматски поставити све тикете које отвара на високи приоритет и доделити их на charlie@chrispresso.com.
#!/bin/bash
curl -X POST \
-F "event_id=$NOTIFY_HOSTPROBLEMID" \
-F "host=$NOTIFY_HOSTNAME" \
-F "state=$NOTIFY_HOSTSTATE" \
-F "text=$NOTIFY_HOSTOUTPUT" \
-F "priority=3 high" \
-F "owner=charlie@chrispresso.com" \
https://zammad.example.com/api/v1/...
Како то уствари функционише?¶
Постоје две врсте података које можете да проследите API-ју, обе у облику парова кључ/вредност:
- Checkmk параметри
су обавезни и чине садржај примљених тикета/чланака. Они такође одређују да ли догађај отвара нов тикет или освежава/затвара постојећи.
Ово су једине вредности које се користе у примерима скрипти. Користите их баш овако; технички, могу се прилагодити, али је тешко замислити добар разлог за то.
- Атрибути тикета
су опциони и могу се користити за прилагођавање подешавања за новоотворене тикете (нпр. постављање власника, групе, приоритета или стања).
Ако желите да прилагодите своју Checkmk скрипту упозорења, урадите то на овај начин. Једноставно додајте опцију „form“ за сваку (
-F "кључ=вредност") групу у команднојcurlлинији ваше скрипте, као у примеру изнад.
Путоказ
💡 То је само API путања!
Када користите Checkmk интеграцију, поруке морају бити форматиране на одређени начин, али то не значи да поруке заправо морају да долазе од Checkmk.
Ако користите други алат за праћење који Zammad званично не подржава, вероватно постоји начин да га натерате да ради са вашом Checkmk URL адресом повратног позива.
Checkmk параметери¶
По примању упозорења, Zammad додаје нови чланак који садржи детаље догађаја који га је покренуо:
Ови детаљи потичу из поља наведених у наставку, која одговарају параметрима које обезбеђује Checkmk ($NOTIFY_*).
Обавезна поља су означена звездицом (*).
- event_id*
Јединствени ID за системски догађај. (
$NOTIFY_SERVICEPROBLEMID/$NOTIFY_HOSTPROBLEMID)- host*
Назив хоста система из којег је настао догађај. (
$NOTIFY_HOSTNAME)Користи се за одређивање да ли нови догађај припада постојећем тикету. Такође се користи у предмету новонасталог чланка („<host> is <state>”).
- service
Назив сервиса из кога је догађај настао. (
$NOTIFY_SERVICEDESC)Користи се за одређивање да ли нови догађај припада постојећем тикету.
Приказује се као
-када се изостави.- state*
Тренутно стање дотичног сервиса или хоста. (
$NOTIFY_SERVICESTATE/$NOTIFY_HOSTSTATE)Користи се за откривање када би тикет требало да се аутоматски затвори (тј. на
OK/UP). Такође се користи у предмету новонасталог чланка („<host> is <state>”).- text
Излазни подаци процеса који је покренуо догађај. (
$NOTIFY_SERVICEOUTPUT/$NOTIFY_HOSTOUTPUT)Приказује се као
-када се изостави.
Атрибути тикета¶
Пронађите комплетну листу атрибута тикета у управљању објектима.¶
Атрибути тикета су потпуно опциони и могу се користити за прилагођавање тикета које Checkmk креира. (Имајте на уму да ће ови атрибути бити занемарени ако нови догађај припада постојећем тикету.)
Зашто бисте желели ово да урадите? Можда имате само једног IT момка и сви проблеми праћења система би требали бити аутоматски додељени баш њему. Или, можда одређујете више правила за упозорења тако да прекиди у доступности базе података имају већи приоритет од упозорења о преосталом простору на диску.
У већини случајева, вероватно ћете желети да подесите бар једно од следећег:
group
owner
state
priority
али у пракси, можете подесити скоро све атрибуте, укључујући прилагођене атрибуте које сте додали преко панела за управљање објектима.
Имајте на уму да се следећи атрибути се не могу прилагодити:
title
id
ticket number
customer
created_by_id
updated_by_id
Које вредности је могуће поставити?¶
Упозорење
😵 Неисправне вредности → непредвидљиво понашање
Ако наведете вредност коју Zammad не разуме (нпр. -F "priority=high"), није увек сасвим јасно шта ће се догодити. У неким случајевима ће се уместо тога отворити тикет са подразумеваним вредностима — али у другим, можда неће бити уопште отворен!
Дакле, које вредности Zammad разуме? Па, зависи…
- owner
Користите имејл адресу или корисничко име:
-F "owner=it@chrispresso.com"
- group & priority
Погледајте падајуће меније у панелу тикета:
-F "group=Users" -F "priority=3 high"
Белешка
🙅 Стање тикета НЕ МОЖЕ да се подеси на овај начин!
Зашто? Зато што се
-F "state=..."већ користи као Checkmk параметар.- Све остало
Да бисте подесили било које друге атрибуте, помоћи ће вам да знате да се снађете у rails конзоли. Важеће вредности су оне које можете поставити текстуалним низом:
# valid >> Ticket.first.update(note: "You're gonna need a bigger boat") => true >> Ticket.first.note => "You're gonna need a bigger boat" >> Ticket::State.find_by(name: "open").id => 2 >> Ticket.first.update(state_id: 2) => true >> Ticket.first.state.name => "open" # invalid >> Ticket.first.update(preferences: "I'm a Checkmk ticket!") => true >> Ticket.first.preferences => {}
Ове вредности се затим могу пренети директно у API:
-F "note=You're gonna need a bigger boat" -F "state_id=2"
