Недавно один из наших старших инженеров спросил меня о переключении контекста при использовании syslog-ng и записи журналов из нашего приложения на диск.
Контекст:
Я хочу использовать syslog-ng для входа & отправьте вывод из нашего приложения, написанного на C ++, в logstash на удаленном хосте сервера журналов, а затем перенесите все это вasticsearch & используйте Kibana в качестве внешнего интерфейса для просмотра, анализа и вывода полезных метрик. Стек ELK
В настоящее время мы используем буфер FSYNC размером 4 КБ или 8 КБ, который периодически выводит данные из журналов на диск; то есть мы не форсируем запись на диск для каждой записи журнала.
Как и любой хороший инженер, ищущий производительность, он хочет понять, увидим ли мы большее переключение контекста или сможем ли мы повысить производительность, используя syslog-ng.
Таким образом, вопрос заключается в следующем: будет ли использование syslog-ng уменьшать или увеличивать переключение контекста на хосте этого приложения.
Мой опыт приводит меня сюда, чтобы задать вопрос — учитывая, что у меня нет достаточных знаний, чтобы придумать ответ самостоятельно.
Давний тайник, все еще новичок в публикации. Спасибо!
Это зависит от того, сколько журналов вам нужно обработать и сколько ресурсов вы готовы посвятить.
Мы используем Kibana / Elastic search с Logstash, и нагрузка становится довольно большой, но опять же у нас более 400 серверов, так что YMMW. Java на самом деле не известна своей снисходительностью к ресурсам. Тем не менее, с другой стороны, это довольно легко настроить.
Разбор журналов в Logstash может быть сделан с помощью Grok. Подберите пару виртуальных машин и поэкспериментируйте с ними, если у вас большая конфигурация среды, которая необходима для того, чтобы сделать ее терпимой, или если у вас есть деньги, вы можете бросить на нее аппаратное обеспечение до тех пор, пока оно не заработает.