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 ответов

50 просмотров

Мы логи хостов как и всего остального кидаем в 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 🇺🇦 Автор вопроса
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 месяца не обновляют зависимости. Так-то зависимости не только фиксы приносят, а еще новые дыры

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта