Назад | Перейти на главную страницу

Плагин icinga2 с многострочным выводом

Я пытаюсь написать собственный плагин для Icinga2, который получает информацию о лицензии из продукта, который мы предоставляем нашим клиентам. Это действительно простой сценарий, но есть несколько строк вывода, и я пытаюсь собрать данные и отформатировать их в рамках служб для определенного хоста.

Вот вывод данных:

Users of product1, Total issued=10, Total used=0
Users of product2, Total issued=10, Total used=0
Users of product3, Total issued=10, Total used=0
Users of product4, Total issued=10, Total used=0
Users of product5, Total issued=50, Total used=11
Users of product6, Total issued=10, Total used=0
Users of product7, Total issued=771, Total used=0
Users of product8, Total issued=771, Total used=8
Users of product9, Total issued=771, Total used=0
Users of product10, Total issued=60, Total used=0

Вот то, что, как мне кажется, нужно передать в Icinga2:

COMSOL CHECK OK : Users of=product1, Total issued=10, Total used=0| UsersOf=product1;;;; TotalIssued=10;;;; TotalUsed=0;;;;
COMSOL CHECK OK : Users of=product2, Total issued=10, Total used=0| UsersOf=product2;;;; TotalIssued=10;;;; TotalUsed=0;;;;
COMSOL CHECK OK : Users of=product3, Total issued=10, Total used=0| UsersOf=product3;;;; TotalIssued=10;;;; TotalUsed=0;;;;
COMSOL CHECK OK : Users of=product4, Total issued=10, Total used=0| UsersOf=product4;;;; TotalIssued=10;;;; TotalUsed=0;;;;
COMSOL CHECK OK : Users of=product5, Total issued=50, Total used=11| UsersOf=product5;;;; TotalIssued=50;;;; TotalUsed=11;;;;
COMSOL CHECK OK : Users of=product6, Total issued=10, Total used=0| UsersOf=product6;;;; TotalIssued=10;;;; TotalUsed=0;;;;
COMSOL CHECK OK : Users of=product7, Total issued=771, Total used=0| UsersOf=product7;;;; TotalIssued=771;;;; TotalUsed=0;;;;
COMSOL CHECK OK : Users of=product8, Total issued=771, Total used=8| UsersOf=product8;;;; TotalIssued=771;;;; TotalUsed=8;;;;
COMSOL CHECK OK : Users of=product9, Total issued=771, Total used=0| UsersOf=product9;;;; TotalIssued=771;;;; TotalUsed=0;;;;
COMSOL CHECK OK : Users of=product10, Total issued=60, Total used=0| UsersOf=product10;;;; TotalIssued=60;;;; TotalUsed=0;;;;

Вот мой сценарий:

#!/bin/bash
license=$(/opt/licenses/comsol/lmstat -a |grep 'Users of' |sed 's/://g' |head -10| awk '{print "COMSOL CHECK OK : Users of="$3", Total issued="$6", Total used="$11 "| UsersOf="$3";;;; TotalIssued="$6";;;; TotalUsed="$11";;;;" }') 

printf "${license}\n"

Как видите, это действительно просто, но я получаю следующие ошибки в Icinga this this config ...

Plugin Output
sed: couldn't write 85 items to stdout: Broken pipe
grep: write error: Broken pipe
COMSOL CHECK OK : Users of=product1, Total issued=10, Total used=0
COMSOL CHECK OK : Users of=product2, Total issued=10, Total used=0
COMSOL CHECK OK : Users of=product3, Total issued=10, Total used=0
COMSOL CHECK OK : Users of=product4, Total issued=10, Total used=0
COMSOL CHECK OK : Users of=product5, Total issued=50, Total used=10
COMSOL CHECK OK : Users of=product6, Total issued=10, Total used=0
COMSOL CHECK OK : Users of=product7, Total issued=771, Total used=0
COMSOL CHECK OK : Users of=product8, Total issued=771, Total used=8
COMSOL CHECK OK : Users of=product9, Total issued=771, Total used=0
COMSOL CHECK OK : Users of=product10, Total issued=60, Total used=0

Я даже попытался передать все это в одну строку, чтобы результат был таким:

COMSOL CHECK OK : Users of=product1, Total issued=10, Total used=0| UsersOf=product1;;;; TotalIssued=10;;;; TotalUsed=0;;;; Users of=product2, Total   issued=10, Total used=0| UsersOf=product2;;;; TotalIssued=10;;;; TotalUsed=0;;;; Users of=product3, Total issued=10, Total used=0| UsersOf=product3;;;; TotalIssued=10;;;; TotalUsed=0;;;; Users of=product4, Total issued=10, Total used=0| UsersOf=product4;;;; TotalIssued=10;;;; TotalUsed=0;;;; Users of=product5, Total issued=50, Total used=10| UsersOf=product5;;;; TotalIssued=50;;;; TotalUsed=10;;;; Users of=product6, Total issued=10, Total used=0| UsersOf=product6;;;; TotalIssued=10;;;; TotalUsed=0;;;; Users of=product7, Total issued=771, Total used=0| UsersOf=product7;;;; TotalIssued=771;;;; TotalUsed=0;;;; Users of=product8, Total issued=771, Total used=8| UsersOf=product8;;;; TotalIssued=771;;;; TotalUsed=8;;;; Users of=product9, Total issued=771, Total used=0| UsersOf=product9;;;; TotalIssued=771;;;; TotalUsed=0;;;; Users of=product10, Total issued=60, Total used=0| UsersOf=product10;;;; TotalIssued=60;;;; TotalUsed=0;;;;

Есть идеи, как заставить это работать ... Будет ли это работать?

Спасибо! Джо

Значения данных производительности должны быть целыми числами. Видеть https://www.monitoring-plugins.org/doc/guidelines.html#AEN201.