Я хочу отслеживать файл журнала, и меня интересуют только строки «Получен новый блок». Мне нужно два разные скрипты для мониторинга
height
, которая всегда должна быть на одно число больше, чем высота в предыдущей строке «Получен новый блок». Если он не +1 И если он не меняется в течение 120 секунд ТОТ будильник.timestamp
(только для строк «Получен новый блок»), которые всегда должны меняться. Если в течение 120 секунд не происходит никаких изменений, ТО сигнал тревоги.Все остальные строки здесь не представляют интереса и их можно игнорировать. Я пытался найти какие-либо примеры, чтобы объединить это, но мне все еще не удалось, поэтому я надеюсь, что вы можете мне помочь.
журнал-фрагмент
{"level":"warn","message":"Main queue","timestamp":"2016-04-30 19:49:33","data":50}
{"level":"info","message":"Checking blockchain on 11.22.33.44:1234","timestamp":"2016-04-30 19:49:33"}
{"level":"warn","message":"Balance queue","timestamp":"2016-04-30 19:49:39","data":50}
{"level":"info","message":"Received new block id: 12345678901234567890 height: 8761 round: 87 slot: 3350818 reward: 100000000","timestamp":"2016-04-30 19:49:41"}
{"level":"info","message":"Removing peer POST http://11.22.33.44:1234/peer/transactions","timestamp":"2016-04-30 19:49:42"}
{"level":"warn","message":"Main queue","timestamp":"2016-04-30 19:49:43","data":94}
{"level":"warn","message":"Main queue","timestamp":"2016-04-30 19:49:43","data":93}
{"level":"warn","message":"Main queue","timestamp":"2016-04-30 19:49:43","data":52}
{"level":"warn","message":"Main queue","timestamp":"2016-04-30 19:49:43","data":51}
{"level":"warn","message":"Main queue","timestamp":"2016-04-30 19:49:43","data":50}
{"level":"info","message":"Checking blockchain on 11.22.33.44:1234","timestamp":"2016-04-30 19:49:44"}
{"level":"info","message":"Removing peer POST http://11.22.33.44:1234/peer/blocks","timestamp":"2016-04-30 19:49:46"}
{"level":"info","message":"Received new block id: 12345678901234567890 height: 8762 round: 87 slot: 3350819 reward: 100000000","timestamp":"2016-04-30 19:49:50"}
monitrc
set daemon 120 # check services at 2-minute intervals
set logfile /var/log/monit.log
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state
set mailserver SMTP.MAILHOSTER.COM port 587 # primary mailserver
username "LoginUsername" password "LoginPassword"
using ssl
with timeout 30 seconds
set eventqueue
basedir /var/lib/monit/events # set the base directory where events will be stored
slots 100 # optionally limit the queue size
set mail-format {
from: SEND@MAILHOSTER.COM
subject: ALARM on Test-Server -- $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Bye,
Monit
}
set alert RECEIVE@example.net # receive all alerts
include /etc/monit/conf.d/*
If no change occurs for 30 seconds THEN alarm
Вы настроили запуск monit каждые 30 секунд? Monit не предназначен для такой метрики, так как он проверяет каждые (2) минуты из конфигурации по умолчанию. Также обнаружение того, что временная метка не менялась каждые 30 секунд, не то же самое, что проверка каждую секунду, если она не старше 30 секунд.
Также для такого конкретного случая используйте собственный сценарий со всей вашей логикой, а затем действуйте в соответствии с кодом выхода. видеть https://mmonit.com/monit/documentation/monit.html#PROGRAM-STATUS-TESTING