Иногда есть необходимость понаблюдать за определенными метриками на сервере в течение небольшого промежутка времени. Например, когда выполняется миграции или другие одноразовые системные процессы. В нашем арсенале watch, но он не показывает трендов.

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

[название_метрики_1] [значение_метрики_1]
[название_метрики_2] [значение_метрики_2]
...

# Универсальный формат для слежения за метриками

Например, если мы выполняем сложные ритуалы в Mysql'e, хотим понаблюдать за тем, как выглядят в динамике основные InnoDB-метрики:

mysql -e "show status like '%innodb%'"

# выведет статус по нужным метрикам

+---------------------------------------+--------------------------------------------------+
| Variable_name                         | Value                                            |
+---------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status        | Dumping of buffer pool not started               |
| Innodb_buffer_pool_load_status        | Buffer pool(s) load completed at 190423  8:56:51 |
| Innodb_buffer_pool_resize_status      |                                                  |
| Innodb_buffer_pool_pages_data         | 2319323                                          |
| Innodb_buffer_pool_bytes_data         | 37999788032                                      |
| Innodb_buffer_pool_pages_dirty        | 37729                                            |
| Innodb_buffer_pool_bytes_dirty        | 618151936                                        |
| Innodb_buffer_pool_pages_flushed      | 17250691                                         |
| Innodb_buffer_pool_pages_free         | 177529                                           |
...

Теперь, чтобы последить за ними в мониторе, достаточно выполнить такую команду:

curl -s https://rt.onthe.io/watch --data "mysql -e \"show status like '%innodb%'\"" | bash

# Просто делаем POST этой команды на rt.onthe.io/watch и выполняем итоговый bash скрипт

После этого, увидим в терминале ссылку на онлайн-дашборд метрик:

Web watcher: https://rt.onthe.io/?key=5cc0cdcce398b
Ctrl + C to stop watching
...^C

# По ссылке будут доступны тренды по всем метрикам

Вот и все. Пара примеров:

Метрики Mysql

curl -s https://rt.onthe.io/watch --data "mysql -e \"show status like '%rows%'\"" | bash

# Будет следить за всеми *rows* метриками базы данных

Очереди Gearman

curl -s https://rt.onthe.io/watch --data " echo status | netcat 127.0.0.1 4730 -w 1" | bash

# Следим за всеми очередями Gearman'a

Метрики Memcache

curl -s https://rt.onthe.io/watch --data " echo stats | netcat 127.0.0.1 11211 -w 1" | bash

# Будут отслеживаться все метрики Memcache'a

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

TL;DR

Видео вместо слов: