SAYMON документация

Skip to end of metadata
Go to start of metadata

Всякие разные полезные примеры настройки StatRules в секции "Правила формирования данных / Data forming rules".

Отрезаем stdout для проверок скриптом

1. Создаём объект.

2. Настраиваем мониторинг скриптом с указанным текстом.

3. Текст скрипта

#!/bin/bash
echo "{\"a\":11}"

4. В таблице данных видим следующие метрики и значения:

exitCode:0
stdout.a:11

5. В секцию правил формирования данных от агента добавляем правило, в котором записываем значение метрики stdout.a в новую метрику a:

[
  {
    "_comment": "write all metrics",
    "actions": [
      {
        "type": "extend"
      }
    ]
  },
  {
    "_comment": "copy stdout.a value to a",
    "actions": [
      {
        "type": "set",
        "field": "a",
        "value": "{{new.stdout.a}}"
      }
    ]
  }
]

6. В таблице данных видим новую метрику:

exitCode:0
stdout.a:11
a:11

7. Добавляем правило, которое стирает все метрики stdout. Итоговый набор правил выглядит следующим образом:

[
  {
    "_comment": "write all metrics",
    "actions": [
      {
        "type": "extend"
      }
    ]
  },
  {
    "_comment": "copy stdout.a value to a",
    "actions": [
      {
        "type": "set",
        "field": "a",
        "value": "{{new.stdout.a}}"
      }
    ]
  },
  {
    "_comment": "drop all stdout metrics",
    "actions": [
      {
        "type": "drop",
        "include": [
          "stdout"
        ]
      }
    ]
  }
]

Отрезаем message для mqtt-проверок

1. Создаём объект и подписываемся в нём на топик test/1565691906.

2. Создаём в объекте операцию - выполнение скрипта с текстом.

3. Текст скрипта:

#!/bin/bash
mosquitto_pub -t 'test/1565691906' -m '{"temperature":0,"humidity":0}'

4.1. Добавляем правила формирования данных (вариант с drop exclude):

[
  {
    "_comment": "drop topic fields",
    "actions": [
      {
        "type": "drop",
        "exclude": [
          "Temperature (C)",
          "Humidity (%)"
        ]
      }
    ]
  },
  {
    "_comment": "remap message.temperature to Temperature (C)",
    "actions": [
      {
        "type": "set",
        "field": "Temperature (C)",
        "value": "{{new.message.temperature}}"
      }
    ]
  },
  {
    "_comment": "remap message.humidity to Humidity (%)",
    "actions": [
      {
        "type": "set",
        "field": "Humidity (%)",
        "value": "{{new.message.humidity}}"
      }
    ]
  }
]

4.2. Добавляем правила формирования данных (вариант с drop include):

[
  {
    "_comment": "drop topic fields",
    "actions": [
      {
        "type": "drop",
        "include": [
          "message",
          "topic"
        ]
      }
    ]
  },
  {
    "_comment": "remap message.temperature to Temperature (C)",
    "actions": [
      {
        "type": "set",
        "field": "Temperature (C)",
        "value": "{{new.message.temperature}}"
      }
    ]
  },
  {
    "_comment": "remap message.humidity to Humidity (%)",
    "actions": [
      {
        "type": "set",
        "field": "Humidity (%)",
        "value": "{{new.message.humidity}}"
      }
    ]
  }
]

5. Выполняем операцию и в таблице данных видим только нужные метрики с новыми именами:

Temperature (C):0
Humidity (%):0

Собираем значения из нескольких mqtt-топиков

1. Создаём объект и подписываемся в нём на топики с маской - test/1565692513/#.

2. Создаём в объекте операцию - выполнение скрипта с текстом.

3. Текст скрипта:

#!/bin/bash
mosquitto_pub -t 'test/1565692513/value' -m '33'
mosquitto_pub -t 'test/1565692513/meta' -m 'C'

4. Добавляем правила формирования данных:

[
  {
    "_comment": "drop topic fields",
    "actions": [
      {
        "type": "drop",
        "exclude": [
          "value",
          "units"
        ]
      }
    ]
  },
  {
    "conditions": [
      {
        "_field": {
          "name": "new.topic",
          "value": {
            "_ct": "value"
          }
        }
      }
    ],
    "actions": [
      {
        "type": "set",
        "field": "value",
        "value": "{{new.message}}"
      }
    ]
  },
  {
    "conditions": [
      {
        "_field": {
          "name": "new.topic",
          "value": {
            "_ct": "meta"
          }
        }
      }
    ],
    "actions": [
      {
        "type": "set",
        "field": "units",
        "value": "{{new.message}}"
      }
    ]
  }
]

5. Выполняем операцию и в таблице данных видим только нужные метрики с новыми именами:

value:33
units:C

Сохраняем минимум метрик из проверки http-get

1. Создаём объект.

2. Настраиваем мониторинг HTTP-запросом.

3. Проверяемый адрес - https://saymon.info

4. В таблице данных видим кучу метрик.

5. В секцию правил формирования данных от агента добавляем правило, в котором стираем всё, кроме метрик statusCode, statusText и responseTimeMs:

[
  {
    "_comment": "drop all metrics except statusCode, statusText and responseTimeMs",
    "actions": [
      {
        "type": "drop",
        "exclude": [
          "statusCode",
          "statusText",
          "responseTimeMs"
        ]
      }
    ]
  }
]

6. В таблице данных видим новую метрику:

statusCode:200
statusText:OK
responseTimeMs:715



Related articles