Не ожидал я такой засады от Java

Я, не то чтобы часто, но как минимум раз в полгода пишу всякие утилитки и приложения на java. В основном клиенты к BD на десктоп. В качестве основного инструмента пользуюсь JavaFX.

И вот, поменял себе железо, начал ставить софт, в том числе и IDE для разработки. Ну и заодно решил попробовать 11-ю (да и 12-ю) версию SDK. Открываю старый проект, дописать пару фишек. А он не работает. IDE подчеркивает красным все что связано с JavaFX.

Вобщем, пока я был в танке, они выпилили JavaFX из java! Не, ну С… (Стабильность).

Оно конечно есть проект Open JavaFX, продвигаемый достойной компанией. Но мне теперь придется кучу проектов переделывать, что бы все заработало! Ну не уроды эти Ораклы?

Так что, пока остаюсь на 8-й жабе. Но уже как то не уютно стало мне в этой среде.

Fluent bit, timestamps и timezone — баги, они есть везде.

Fluent bit очень легкий агент по сбору логов и прочей информации для Ealstic Stack. Но, как и у всех программ, у него встречаются баги.

Например, существует проблема по формированию @timestamp различными input плагинами. Плагины tail и syslog считают, что текущее время компьютера находится во временной зоне UTC и добавляют к нему разницу между UTC и текущей тайм зоной. Это происходит даже в том случае, если текущее время системы сконфигурировано с учетом вашей временной зоны. А, например, плагин exec правильно читает текущее время системы.

В результате в индексах эластика записям присваивается не правильный @timestamp. И некоторые логи в индексе попадают в будущее 🙂

Бороться с этим можно только при помощи парсеров. В сообщениях, обрабатываемых fluent bit обязательно должно быть поле, содержащее время когда было сформировано событие. Обычно в лог файлах такое поле присутствует. Если его там нет, постарайтесь настроить программы так, что бы они помещали его в логи.

При определении секции [INPUT] используйте параметр Parser для однострочных логов. Или Parser_Firstline для многосторочных логов.

В секции PARSER, для проблемных плагинов явным образом указывайте параметр Time_Offset.

Например, для обработки информации получаемой из syslog используют стандартный парсер syslog-rfc3164. Поскольку input плагин syslog содержит баг, то придется в парсере добавить параметр Time_Offset. В результате конфигурация будет выглядеть как то так:

[INPUT]
    Name syslog
    Tag syslog
    Parser syslog-rfc3164
    Listen 127.0.0.1
    Port 5140
    Mode tcp

[PARSER]
    Name syslog-rfc3164
    Format regex
    Regex /^\<(?<pri>[0-9]+)\>(?<time>[^ ]* {1,2}[^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[a-zA-Z0-9_\/\.\-]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$/
    Time_Key time
    Time_Format %b %d %H:%M:%S
    Time_Format %Y-%m-%dT%H:%M:%S.%L
    Time_Keep On
    Time_Offset +0300

Итого, если вы видите, что события в эластике формируются в будущем, начинайте писать свой PARSER 🙂

Kibana и Apache

Kibana конечно сама хорошо работает с клиентами. Но лучше спрятать её за нормальным http сервером. Там где мне пришлось развертывать ELK пользуются только Apache, поэтому в качеcтве примера используется данный web сервер.

Сначала в конфигурационном файле kibana.yml определим два параметра:

server.basePath: "/kibana"
server.rewriteBasePath: true

Поскольку Apache выступает фронтендом для разных приложений, доступ к Kibana сделаем через путь http://any.body.com/kibana. В конфиге Apache определим Location.

<Location /kibana>
  ProxyPreserveHost On
  ProxyPass  http://any.ip.com:5601/kibana
  ProxyPassReverse  http://any.ip.com:5601/kibana
</Location>

Собственно, все. Дальше можно включать необходимые вам плюшки web сервера.

Все про боль, с научной точки зрения

Лежал, слушал два часа с температурой 39 (привез вирус из отпуска, жесть просто).

Научное объяснение, откуда у нас боль. Узнал много интересного. Рекомендую.

Отпуск.

Я в отпуске. Телефон почти не работает. Инет совсем не работает. Вернусь в следующем месяце. Завидуйте 🙂

Новая книга Андрея Маркелова

Андрей, в прошлом известный преподаватель по RedHat. На данный момент, работающий в народном хозяйстве Швеции в компании Ericsson. Написал новую книгу Введение в технологии контейнеров и Kubernetes. Книга доступна как в печатном виде, так и в формате pdf. Рекомендую.

З.Ы. Регулярно покупаю его книги по OpenStack.

З.З.Ы. Попробовал воспроизвести почти все примеры, которые Андрей описал в книге. Всё работает. Но есть небольшие нюансы, которые в книге не учтены.

При конфигурации кубернетес, в разделе «Подготовка операционной системы» необходимо добавить, что требуется явная загрузка модуля ядра br_netfilter.

В случае CentOS, создать конфиг файл, в котором добавить имя модуля, что бы он загружался при старте системы.

vim /etc/modules-load.d/k8s.conf
  br_netfilter

и сразу руками загрузить его, что бы не делать перезагрузку системы.

modprobe br_netfilter

Иначе у вас не сработает запись единицы в файл /proc/sys/net/bridge/bridge-nf-call-iptables

И соответственно будет ругаться kubeadm init, при инициализации управляющей ноды.

З.З.З.Ы. Проблема PDF версии книги: символы тире в примерах yaml файлов — это типографские широкие тире. Простой копи-паст не получится.

Yamandu Costa (гитаРРРа!)

Недавно открыл для себя супер гитариста из Бразилии Yamandu Costa

Вот, решил поделиться с любителями хорошей музыки 🙂

Петиция против электросамокатов

У моего товарища, двух внучек сбил электросамокат на высокой скорости. Я как отец, тоже боюсь за свою дочь, когда мимо пролетают безбашенные смузисты.

Скоростной транспорт должен ездить по проезжей части, а не по тротуарам. Если согласны, подпишите петицию: Запретите ездить на электросамокатах по тротуару!

Еще один пример использования нескольких таблиц маршрутизации

Добавил новый материал в раздел Материалы к курсам.

Два провайдера. Правильная конфигурация таблицы маршрутизации.

Или, что следует сделать в первую очередь при подключении двух и более провайдеров к Linux роутеру.

Wi-Fi в метро без рекламы или копай копай Штирлиц

Заколебало каждый раз подключаться к бесплатному Wi-Fi в метро. На старом телефоне оплачивал раз в год и без проблем пользовался сетью. Но старый фон ушел в лучший мир. Кремний к кремнию, медь к меди…

Вобщем оплатить сие чудо можно либо списав деньги с мобилы, либо через пейпал. Пейпал я давно забыл и не хочу вспоминать. Особенно, когда wi-fi.ru (операторы сети в метро) неожиданно без объявления войны списали последние деньги с привязанной к пейпал карты, как раз перед тем, как мне нужно было сделать обязательный платёж. А на мобилу кидать не хочу, тем более что я даже не догадываюсь сколько деньзнаков туда надо залить.

У всех нормальных сервисов, ну по идее, должна быть страничка, где описаны цены на услуги и возможность пополнить счет. Зайдите на http://wi-fi.ru и найдите где же это дело у них спрятано. Не догадались? Домик нажмите: https://cabinet.wi-fi.ru/. Домик это кабинет! И только на главной странице 🙂 Я грешным делом сначала зашел в товары, потом домик, мы на главной. Нажать второй раз на домик что бы попасть в личный кабинет — мощно! Что курим?

Регистрация в кабинете по номеру телефона и СМС. Там же есть тариф: 50 р в месяц (годовой подписки уже нет) и заветная кнопка купить. Ну на конец то я её нашел, подумал Штирлиц.

И да, не забудьте отключить ABP, AdGuard или чем вы пользуетесь для блокировки рекламы иначе вас ждет дивным мир бесконечных циклов.