Одна из отличительных особенностей языка Python — это посвящённые этому языку конференции, так называемые PyConы. Не так давно мне удалось побывать на одном таком PyCon-е — EuroPython 2014. EuroPython — это одна из наиболее крупных европейских ежегодных конференций по языку Python, которая три последних года проводилась во Флоренции, а в 2014м — первый раз в Берлине. Пока свежи воспоминания решил написать небольшой отчётик — что и как было.
Читать полностью »
Рубрика «logstash» - 3
Впечатления от посещения EuroPython 2014
2014-09-08 в 21:49, admin, рубрики: elasticsearch, gevent, logstash, nix, pycon, python, virtualenv, конференцииМаленькая админская история: как поймать OOM
2014-08-01 в 11:47, admin, рубрики: logstash, syslog, udp, webzilla, Блог компании Webzilla, Серверное администрирование, системное администрирование, спасибо за чтениеАдминская загадка: На сервере произошло три oom kill'а, а мониторинг сказал только про два. Почему?
Конфигурация
Для мониторинга всего у нас настроена связка ganglia-shinken-logstash-elasticsearch-kibana. Полное описание довольно обширно, так что ограничусь только частью, имеющей отношение к проблеме.
В logstash присылаются логи со всех серверов. Он их складывает в elasticsearch. В конфиге logstash'а настроена реакция на всякие странные сообщения, которые свидетельствуют о проблемах. Если сообщение появляется, присылается event мониторингу (shinken), который разными методами начинает беспокоить админов.
Помимо syslog'ов, которые шлют сообщения от большинства приложений, у нас настроена ещё и отправка netconsole от всех ядер. Сама технология проста до невозможности — ядро помимо dmesg'а посылает сообщения в виде UDP-датаграмм на указанный IP и mac-адрес. MAC-адрес нужен потому, что netconsole очень низкоуровневая и заниматься разгадыванием «как из IP сделать MAC» (то есть ARP) не собирается. Благодаря низкоуровневости сообщения проходят даже в ситуациях полного катаклизма. Например, если программный коммутатор перестал работать (и сеть недоступна), сообщения всё равно будут посылаться. Более того, они будут посылаться, даже если в iptables сказано -j drop_vsyo_nafig. И, самое главное и ценное, эти сообщения успешно будут отправлены, если дисковая подсистема полностью не работает. То есть для post-mortem исследований «что именно случилось с зависшим сервером» — самое оно.
Очевидным кандидатом в «плохие» сообщения является сообщение от oom-killer'а.
[517935.914380] ntpd invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 [517935.914730] Call Trace: [517935.914807] [<ffffffff816e14ce>] dump_header+0x83/0xbb [517935.914877] [<ffffffff816e155b>] oom_kill_process.part.6+0x55/0x2cf ... с финальным торжествующим: [517935.951044] Out of memory: Kill process 4550 (apache2) score 247 or sacrifice child [517935.951203] Killed process 4550 (apache2) total-vm:2610268kB, anon-rss:2012696kB, file-rss:3928kB
Итак, возвращаемся к загадке. Идёт пусконаладка, предпродакшен, как, вдруг, апач (точнее, wsgi-приложение) насасывается данных до неприличия, и его прибивают со словами «go be fat somewhere else». Админам приходит сообщение. Казалось бы всё хорошо (ну, в админском смысле «хорошо»). Но…
Случилось три oom'а, сообщения пришли о двух. Мониторинг в порядке, netconsole в порядке. Загадка? Проблемы? Симптомы таинственной неведомой фигни? Звать придворного шамана с бубном?
Читать полностью »
Имортируем открытые гео данные из OpenGeoDB в Elasticsearch
2014-06-25 в 9:30, admin, рубрики: elasticsearch, geodata, logstash, nosql, OpendataЗадумывались ли вы когда-нибудь, найдя аккуратную публичную базу данных, как хорошо было бы включить её в своё приложение, чтобы оптимизировать какую-нибудь функциональность, пусть даже незначительно? Конечно же да! Этот пост расскажет как, использовать Logstash для превращения внешнего набора данных в желаемый формат, проверить результат в Kibana и убедиться что данные правильно индексированы в Elasticsearch так, что могут быть использованы при больших нагрузках на живых серверах.
Развертывание сервера на Windows Server 2012 / Dell PowerEdge R420
2013-12-08 в 20:24, admin, рубрики: Dell PowerEdge, logstash, puppet, pxe, windows, Серверное администрирование, системное администрирование, метки: Dell PowerEdge, logstash, puppet, pxe, windowsЗадача
Необходимо развернуть сервер со следующими требованиями:
- Массив дисков RAID-10
- Full Performance in BIOS
- Windows Server 2012 с всеми обновлениями и патчами
- Это будущий сервер приложений со службами для которых необходим .net 4.5
- Мониторинг доступности сервера, а также CPU, Памяти и свободного места на диске
- Необходимо подключить сервер к системе выкатки релизов Octopus Deploy
Сложности
Основное требование здесь — все должно быть максимально автоматизировано, участие человека минимизировано до 1 минута «в начале» и 1 минута «в конце». Целью такой автоматизации является потенциальная необходимость «поднять» в дальнейшем несколько новых серверов достаточно быстро. Решение должно быть не сложным для восприятия младшими админами и разработчиками, в чьи обязанности развертывание серверов не входит.
Решение
Начнем с того, что все, что у меня сейчас есть — это работающий сервер, который подключен к сети. Я знаю его MAC-Адрес и будущее имя (app8). На нем нет ни операционной системы ни возможности вручную вставить диск. Да чего уж греха таить — диска с виндой у меня тоже нет!
Предстоит сделать следующее:
- Настроить параметры производительности BIOS
- Cоздать массив RAID-10
- Загрузится с PXE в загрузчик pxeboot.com
- Выбрать соответствующий загрузчик boot.wim и Выбрать требуемую операционную систему
- Создать логические диски C: и D:
- Произвести установку операционной системы на диск C:
- Произвести конфигурацию сервера под требуемые задачи при помощи puppet
Наши сервера находятся на колокейшене, который физически далеко, поэтому буду использовать WDS и IP KVM. Доступ к KVM осуществляется через веб интерфейс, сам удаленный «экран» реализован при помощи java-based приложения. По большому счету IP KVM уже не обязателен, т.к. все мои развертывания происходят практически автоматически, но старая привычка наблюдать за происходящим на экране осталась, да и заводские настройки железа не всегда совпадают с требуемыми.
Пока что на сервере ничего нет:
Читать полностью »
Собираем, парсим и отдаём логи с помощью Logstash
2013-01-21 в 23:17, admin, рубрики: Log Management, logstash, системное администрирование, метки: Log Management, logstash, парсингПриветствую.
Так уж сложилось, что по долгу работы мне приходится много времени уделять логам. Это и участие в выработке правил и политик сбора/хранения/использования логов, это и разбор разных инцидентов и обнаружение аномалий. За сутки наши программы, сервисы и серверы генерируют ОЧЕНЬ большое количество логов. И потребность копания в логах растёт постоянно.
Мне довелось поработать с коммерческими лог-менеджмент продуктами типа ArcSight, RSA Envision, Q1 Labs. У этих продуктов есть как плюсы, так и минусы. Но в статье речь пойдёт не о них.
Речь будет о Logstash.
Что же такое Logstash? Зачем он нужен? Что он умеет?
Читать полностью »
Просмотр архивных логов apache c помощью Logstash+Elastisearch+Kibanа
2013-01-18 в 18:27, admin, рубрики: Apache, elasticsearch, kibana, logs, logstash, системное администрирование, метки: apache, elasticsearch, kibana, logs, logstashПриветствую.
Нет так давно передо мной встала задача пробежаться по старым логам apache. Надо было сделать выборку по нескольким IP адресам, отыскать некоторые аномалии и попытки SQL-injection'ов. Логов было не так много, порядка миллиона строк и можно было спокойно всё сделать стандартным набором grap-awk-uniq-wc итд.
Поскольку я уже какое-то (больше года) время пользуюсь связкой Logstash-Elasticsearch-Kibana для анализа-просмотра всевозможных логов, то решил ей воспользоваться и в данной ситуации.
Краткое описание основных компонентов системы.
Logstash — бесплатная open-source программа на java для сбора и нормализации логов. Может принимать логи либо с локальных файлов, либо через tcp/udp порты. На момент написания статьи разных входных (input) фильтров насчитывается 26. Есть даже входной модуль, для сбора сообщений из twitter'а или irc.
Elasticsearch — бесплатный open-source поисковый сервер основанный на Apache Lucene. Быстрый, легко настраиваемый и очень масштабируемый.
Kibana — веб-интерфейс написанный на ruby, для отображения данных из Elasticsearch. Простая настройка, но множество функций — поиск, графики, stream.