Просмотр FIX-сообщений в логах

Часто при поддержке работы торговой системы бывает важно быстро посмотреть логи на PROD, чтобы найти в логах FIX-сообщений информацию о каком-то определенном ордере, по которому возникли вопросы. Так как чаще всего торговые системы работают на Linux, знание командной строки Linux и его главных утилит очень желательно и полезно.

ssh и putty

Начнем с утилиты ssh, так как подключение к удаленной системе чаще всего осуществляется через ssh. ssh может также использоваться для создания ssh-тоннелей, что тоже может пригодиться в случае подключения к удаленной машине с машины, которая не прописана в сетевых файрволах, через другую  машину, которая зарегистрирована в файрволе.

На Windows для ssh-подключений используется популярная утилита putty. Эта утилита (точнее, набор утилит) кроме всего прочего позволяет сохранять сессии к удаленным системам. В ей можно настраивать логин и установить первую команду, которая исполнится на удаленной машине после логина. Это экономит время в ситуациях, когда важна каждая секунда.

В putty полезно выставить background colors для сессий. Например, для PROD соединений я выставляю темно-красный фон. Это пригодится для тех случаев, когда у вас открыто несколько окон с соединениями к разным машинам. Благодаря фоновому цвету вы точно знаете, что работаете на PROD системе, чтобы случайно в спешке не сделать на PROD что-то, о чем потом придется жалеть.

more и less

Для просмотра больших файлов используются популярные утилиты more и less. Я предпочитаю работать с less, так как она позволяет листать файл поэкранно как вперед так и назад. Поиск по регулярному выражению в файле включается с помощью «/».

tr и sed

Функция piping — склеивание вывода из одной программы и ввода в другую. Утилита tr помогает заменить невидимый символ SOH на что-то видимое, например «;» или «|».

tr -s '\001' '|'

Очень удобно смотреть FIX-сообщения, когда пары «тег=значение» не сливаются в кашу.

Я предпочитаю между парами «тег=значение» помещать не один символ, а несколько. Например, точку с запятой и пробел: «; «. Утилита tr не умеет заменять один символ на несколько, только — один символ на один другой символ. На помощь нам приходит утилита sed. С помощью команды

sed 's/\x01/; /g'

мы можем еще больше облагородить логи FIX-сообщений и облегчить себе работу с ними.

tail и grep

Незаменимая утилита tail позволяет просматривать обновления логов в реальном времени. Если мы еще воспользуемся механизмом piping, мы можем с помощью утилиты grep в реальном времени фильтровать сообщения и выводить на экран только те строчки, где есть интересующая нас информация (все строки FIX сообщений с тегом 35), отбрасывать неинтересующую нас информацию (все строки с тегом 35=0 — т.е. строки c FIX heartbeat), плюс одновременно облагораживать их, заменяя SOH на «|». Вот как это выглядит:

tail -f Daily.log | grep '35=' | grep -v '35=0' | tr -s '\001' '|'

Итого

Как программисту для выполнения ежедневных, рутинных операций для поиска нужной информации в логах вам нет необходимости знать абсолютно все о Linux. Знакомства с утилитами grep, tail, less, tr, sed, ssh и еще, скажем, diff, cd, ls и редактор vi достаточно для большинства задач. По всем этим командам полно информации в интернете, в книгах и, разумеется, man-страницы.

Если же речь идет о создании и поддержке высокопроизводительных, low-latency систем, без более глубокого знания устройства Linux, его настроек и утилит уже не обойтись.

 

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s