172 похожих чатов

Всем привет. Бывают ситуации, когда процесс внутри контейнера убивается OOM'ом на

хосте.
Но при этом это был не основной процесс контейнера, и в кубе это событие вроде никак не регистрируется (pod не перезапускается, OOMKilled не показывается в статусах). Зато в логах ядра можно найти что-то вроде

[16497976.197435] oom-kill:constraint=CONSTRAINT_MEMCG,nodemask=(null),cpuset=cri-containerd-33203b8683eb11c8b1a56e5d075ccdf5a55c9592d038e766532a5e7a374095a8.scope,mems_allowed=0,oom_memcg=/kubepods.slice/kubepods-pod2f326fad_40e2_4817_8d43_da7b51daeb73.slice,task_memcg=/kubepods.slice/kubepods-pod2f326fad_40e2_4817_8d43_da7b51daeb73.slice/cri-containerd-33203b8683eb11c8b1a56e5d075ccdf5a55c9592d038e766532a5e7a374095a8.scope,task=xxxx,pid=3108415,uid=4351
[16497976.197464] Memory cgroup out of memory: Killed process 3108415 (xxx) total-vm:299620kB, anon-rss:23472kB, file-rss:35600kB, shmem-rss:0kB, UID:4351 pgtables:828kB oom_score_adj:-997

Кто как собирает и обрабатывает эти события? Пока не знаю чего конкретно хочу. Возможно обогатить этот лог мета инфой (containerName, pod, имя ns) 🤔. Возможно есть какие-то стандартные вещи для этого. Логером парсить uid, искать его в kubelet API, соденеять по pid процесса эти два лога, кажется для логера слишком сложно

31 ответов

21 просмотр

Мы логи хостов как и всего остального кидаем в CloudWatch и там есть встроенный механизм алертинга

Dmitry-Sergeev 🇺🇦 Автор вопроса

залить то не проблема. Но хотелось бы видеть что это относится к какому-то конкретному контейнеру, поду, ns

Dmitry Sergeev 🇺🇦
залить то не проблема. Но хотелось бы видеть что э...

Смотря чем коллектишь. У флбентД есть парсер

Dmitry-Sergeev 🇺🇦 Автор вопроса
Serhii Sergey
Смотря чем коллектишь. У флбентД есть парсер

у всех есть парсер, но это не логов pod'а. Это логи ядра

Dmitry Sergeev 🇺🇦
у всех есть парсер, но это не логов pod'а. Это лог...

А у самого процесса есть мониторинг? Может стоит реагировать на up == down?

Если напишешь в понедельник в личинку - дам рецепт.

Sergei Mikhaltsov
Если напишешь в понедельник в личинку - дам рецепт...

Ты можешь тут дать рецепт. Это может быть всем интересно :)

Kirill Garbar
Ты можешь тут дать рецепт. Это может быть всем инт...

Дам, но щас куи пинаю и мне лень. Так и быть тут кину позже

Dmitry Sergeev 🇺🇦
у всех есть парсер, но это не логов pod'а. Это лог...

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

Sergei Mikhaltsov
Дам, но щас куи пинаю и мне лень. Так и быть тут к...

кароч вот https://github.com/sapcc/kubernetes-oomkill-exporter , и промеетем метрики снимаются. Загоните сударю звездочек что ль

Igor Ignatev
еще один заброшенный труп

О госпаде. Форкни и коммить каждый день

Dmitry-Sergeev 🇺🇦 Автор вопроса
Виталий
А у самого процесса есть мониторинг? Может стоит р...

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

Dmitry-Sergeev 🇺🇦 Автор вопроса
Serhii Sergey
У флюентД есть прекрасный хак - юзать руби в парсе...

заюзать ruby/lua не проблема. Но передавать доступы в этот конфиг чтобы он для определенных сообщений ходил в API куба, доставал все поды, искал с нужным uid, мне кажется прям как-то костыльно и не очень

Dmitry-Sergeev 🇺🇦 Автор вопроса
Dmitry-Sergeev 🇺🇦 Автор вопроса
Igor Ignatev
еще один заброшенный труп

так твой reflector на C# такой-же труп, там релизы за последний год для галочки. Чисто чарт поправили и depended bot зависимости обновил. Под категорию релизов каждые 3-4 месяца оно точно не подходит. Ну и для куба, на C#, для куба, на C#, для куба на C# (меня это сломало) Поэтому такой-же труп по твоим сущностным критериям

Dmitry-Sergeev 🇺🇦 Автор вопроса
Dmitry-Sergeev 🇺🇦 Автор вопроса
Sergei Mikhaltsov
кароч вот https://github.com/sapcc/kubernetes-oomk...

по описанию - вроде ловит только ООМК подов, а не всех процессов в них

John Smith
по описанию - вроде ловит только ООМК подов, а не ...

Не, всё ловит, что хотели в сабже. Сам юзаю

Dmitry Sergeev 🇺🇦
так твой reflector на C# такой-же труп, там релизы...

ключевая фраза депендабот обновляет зависимости. в чем проблема с шарпами и кубом? на самом деле прекрасно все там

Igor Ignatev
ключевая фраза депендабот обновляет зависимости. в...

А как же манипуляторы набора кода размещенные на поясе?

Dmitry-Sergeev 🇺🇦 Автор вопроса

прикольная штука, я сначала не понял как так мало кода, и они берут это из node problem detector https://github.com/sapcc/kubernetes-oomkill-exporter/blob/master/main.go#LL15C10-L15C31 у которого уже готовый watcher и парсер для kernel логов есть

Dmitry-Sergeev 🇺🇦 Автор вопроса
George Gaál
А ноде проблем детектор нельзя допилить ?

Да можно наверное, я прост не уверен правильно ли это будет. Хотя это же прост допонительная метрика

Dmitry-Sergeev 🇺🇦 Автор вопроса
John Smith
по описанию - вроде ловит только ООМК подов, а не ...

он там по коду /dev/kmsg парсит затем из лога достает container id, а потом уже из containerd достает всю инфу лейблы, ns, pod и т.д.

Dmitry-Sergeev 🇺🇦 Автор вопроса
Igor Ignatev
ключевая фраза депендабот обновляет зависимости. в...

всё равно глупо не юзать работающий софт на 128 строчек кода, решающий твою проблему, потому что раз в 3 месяца не обновляют зависимости. Так-то зависимости не только фиксы приносят, а еще новые дыры

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
17
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
Ну значит тебе повезло, мы же про транк говорим оба?
Александр (Rouse_) Багель
11
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Карта сайта