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 текст чланка

Ови детаљи потичу из поља наведених у наставку, која одговарају параметрима које обезбеђује 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"