ServerAdmin.ru
31.3K subscribers
669 photos
55 videos
22 files
2.87K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
Существует очень простой и функциональный мониторинг в режиме реального времени - Netdata. Я уже писал о нём ранее. Кратко поясню, как он работает. Netdata состоит из трёх основных компонентов:

1️⃣ Netdata Agents, которые устанавливаются на конечные сервера. Это полностью open source продукты, которые можно скачать из репозитория на github. Они есть под все популярные системы. Установленный на хост он представляет из себя саму службу, базу данных и веб интерфейс. То есть полностью самостоятельный продукт для одиночного сервера. Можно заходить в веб интерфейс по IP адресу сервера и смотреть все метрики.
2️⃣ Netdata Cloud - публичный облачный сервис, к которому можно подключать свои хосты и хранить там метрики. Это закрытый платный продукт с бесплатным тарифным планом на 5 хостов.
3️⃣ Netdata UI - веб интерфейс, в котором можно управлять и смотреть за хостами, которые подключены к облаку. Open source версии общего для всех хостов интерфейса нет. Это полностью закрытый платный продукт, неотъемлемая часть облака.

Таким образом, для одиночных серверов это очень удобный мониторинг. Ставится в пару действий, имеет много модулей и расширений для мониторинга за различными службами: nginx, docker, postgresql и т.д. Там в маркетплейсе почти 1000 интеграций для всех известных служб. Есть и для Proxmox. Можно прям на хост поставить и мониторить его.

В Linux ставится так:

# wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
# sh /tmp/netdata-kickstart.sh --no-updates --stable-channel --disable-telemetry

Он подключает свои репозитории, оттуда ставит софт и все необходимые зависимости. После установки можно идти на https://IP:19999, пропускать аутентификацию в облаке и смотреть всё локально.

Написать эту заметку меня побудило то, что недавно у него вышел нативный агент под Windows. До этого он метрики с винды собирал через Prometheus exporter. И вот появился свой бесплатный агент. Я его развернул, запустил и был очень разочарован. Пишут заметку, чтобы вы не тратили время.

При входе в веб интерфейс агента под Windows он прямым текстом пишет, что локальных дашбордов нет, а работает он только в связке с облаком, где можно его добавить так же, как и остальные агенты. Я сначала подумал, что возможно изменилась политика партии и все агенты работают только с облаком. Но нет. На Linux можно так же, как и раньше пользоваться полностью бесплатно локальной версией. Так что если интересно, можете попробовать. Мониторинг выглядит прикольно.

Возможно локальные дашборды под Windows ещё не допилили, так как агент был анонсирован недавно. Ещё даже описание на github не успели поправить. Там он всё ещё в статусе coming soon. А может так всегда и будет. В таком виде от него толку в бесплатном использовании 0.

Для объединения нескольких бесплатных агентов в единый интерфейс есть некоторый официальный костыль. Любой агент может принимать метрики с других агентов. Для этого в том агенте, кто отправляет, настраивается так называемый parent, куда будут отправлять метрики. Этот parent может их собирать с разных агентов и отображать в своём веб интерфейсе, где можно будет выбирать каждую ноду в отдельности. Управлять такой структурой не очень удобно, но для 5-10 хостов нормальный вариант.

В целом, это интересный и функциональный мониторинг, который выводит метрики в веб интерфейс почти в режиме реального времени. То есть он больше для ситуативного наблюдения, а не исторического. При этом очень прост и быстр в настройке. Ресурсов кушает прилично, не для слабых машин. На одноплатники ставить не надо.

🌐 Сайт / Исходники

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#мониторинг #netdata
👍69👎4
Решил дома обновить свой старенький Mikrotik RB951G-2HnD на более производительную и современную модель hAP ax³. Купил его на Озоне почти по номиналу согласно текущему курсу. Он стоит $139.00, я взял за 17000₽. Вроде и дороговато для роутера, так как нужды в нём большой не было. У меня несколько RB951G работают уже более 10 лет и полностью устраивают.

Решил взять hAP ax³ по нескольким причинам:

1️⃣ Надо уже потихоньку переходить на ROS7 и знакомиться с ней. Я старые устройства для избежания лишних проблем обновлять на 7-ю версию не планирую, пока будет поддерживаться 6-я.

2️⃣ Может показаться странным, но мне очень хотелось иметь возможность отключать мигание светодиодов на роутере. На старых моделях заклеивал их картонкой и скотчем. Напрягает ночью в жилых помещениях это мигание. У меня из коридора мигание было видно в спальне через матовое стекло на двери.

3️⃣ Взял именно hAP ax³, так как этот роутер наиболее мощный за эти деньги: 4 ARM ядра, 1G оперативной памяти, USB порт для внешнего хранилища. Хочу на нём пару контейнеров запустить с pi-hole и каким-нибудь reverse proxy.

4️⃣ Если будут какие-то проблемы с обходом блокировок и замедлений, опять же, контейнеры дадут более широкое поле для манёвров.

А в целом по настройкам там всё то же самое, что и на старых моделях. Кое-что изменилось, но не кардинально. Хотя WiFi без помощи интернета настроить не смог 😄

Сейчас Микротики продаются с преднастроенной конфигурацией, где уже заданы пароли от учётной записи и WiFi. Причём припечатаны они прям жёстко на специальной табличке на самом роутере. С учётом того, что я первым делом сразу же удаляю конфигурацию по умолчанию, для меня это бесполезная возможность. Подумал, что после сброса, пароль админа наверное будет, как на этой табличке, но нет. По умолчанию после сброса учётка как и раньше - admin без пароля.

Роутер понравился. Внешне он довольно крупный, не ожидал. Думал, он по размеру что-то вроде RB951G, только с антеннами. Но на деле он почти в 2 раза больше. У него удобное крепление к стене через специальную площадку. Прошлые модели были без площадки, крепились напрямую через заднюю стенку. Ну и выглядит он стильно.

По долговечности Mikrotik могу сравнить только с Keenetic. Те тоже, все, что покупал, до сих пор работают уже 10+ лет. Все другие домашние роутеры типа D-Link или TP-Link выходили из строя раньше. Но они и стоили заметно меньше.

#mikrotik
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍193👎6
Небольшие советы из практики по настройке Zabbix, которые уменьшат спам от триггеров. Если развернуть Zabbix, взять стандартные шаблоны, применить к хостам и всё это запустить в работу, то очень скоро на мониторинг никто не будет обращать внимание. Мониторинг всегда нуждается в калибровке. Она может быть очень простой на базе небольших изменений стандартных настроек, а может быть очень глубокой с полной заменой всех базовых шаблонов на свои. Я расскажу про первый вариант.

1️⃣ Я практически везде настраиваю отложенные уведомления. Это не очень красивый, но самый простой и быстрый вариант существенно уменьшить спам уведомлений. Не очень красивый он потому, что триггеры всё равно будут срабатывать, но уведомления будут приходить только о тех триггерах, что активны более 5-ти минут. Настраивается это в стандартном правиле уведомлений о триггерах. Там всё делается очень просто. Настройка описана в моей статье.

2️⃣ Триггеры в стандартных шаблонах могут вести себя в целом нормально, но на каких-то хостах вызывать спам. Например, у вас триггер на занятое место на диске в 80%. Если ночью делается дамп БД, потом он сжимается, копируется и удаляется на исходном хосте, вы каждую ночь будете получать уведомление о занятом месте. То есть в момент окончания создания дампа у вас занято 82%, дамп сжимается, пересылается и удаляется, и занято снова 70%, что в целом нормально. И 80% нормально для этой ситуации.

В этой ситуации вам нет смысла менять триггер в изначальном шаблоне. Можно его просто отключить на этом хосте, но не хочется. Конкретно в этом примере вопрос можно решить изменением макроса, если он используется в выражении триггера, но так бывает не всегда. Я в этом случае просто копирую в этом хосте данный триггер, настраиваю его так, как мне нужно, а тот, что наследуется из шаблона, отключаю. Получается не очень красиво, так как появляется непереносимая привязка на конкретном хосте, но если это нужно редко и не хочется готовить для таких хостов отдельные шаблоны, то пойдёт.

3️⃣ У меня часто бывает так, что какой-то триггер или несколько спамят, но прямо сейчас мне лень ими заниматься или нет возможности. Чтобы потом разом их все откалибровать, можно зайти в раздел Отчёты Топ 100 триггеров, посмотреть там самые активные и вручную с ними поработать.

4️⃣ Очевидный совет, но добавлю, чтобы был готовый список действий. Я почти всегда отключаю те или иные правила обнаружения, которые мне не нужны, либо правлю их. На Windows хостах всегда в стандартном шаблоне отключаю правило автообнаружения служб, а на Linux - в правиле автообнаружения блочных устройств отключаю триггер на отклик диска при операциях чтения/записи. Я не скажу, что эти данные бесполезны, но на практике они дают очень много срабатываний, которые лично для меня практической пользы не несут.

Альтернатива всем этим действиям - создание собственных шаблонов, где во-первых, стоит использовать только те айтемы, что вам реально нужны. Во-вторых, стоит особое внимание обратить на зависимость триггеров. Их грамотная настройка очень сильно снижает количество бесполезных событий мониторинга. Это в разы увеличивает затраты на начальное внедрение, но компенсируется в процессе эксплуатации. Особенно на больших инфраструктурах, где не вы один следите за мониторингом.

#zabbix
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123👎3
В пятничной подборке видео был ролик с open source системой для ведения заметок, которую можно развернуть на своём сервере. То есть это полностью бесплатная система пока без каких-то намёков на монетизацию. Речь идёт о Blinko. Я сначала прохладно к ней отнёсся, но зацепил внешний вид. Смотрится легковесно и аккуратно. Решил всё же попробовать.

Развернул у себя и немного поработал с ней. Функциональности пока немного. Проект ушёл в первый релиз только в конце октября этого года. Развивается очень активно. Судя по всему, это какая-то китайская компания ведёт разработку. Есть демо:

🌐 https://blinko-demo.vercel.app
👨‍💻 blinko / blinko

Из-за обилия китайского текста смотрится не очень, поэтому проще развернуть у себя чистую установку и попробовать. Там буквально 2 контейнера: веб интерфейс и субд postgresql.

# curl -s https://raw.githubusercontent.com/blinko-space/blinko/main/install.sh | bash

Дальше мои замечания по Blinko.

🔹Сервис полностью работает через браузер. Интерфейс адаптивный, отлично смотрится на смартфонах. Отдельно отмечу, что интерфейс очень лёгкий. Комфортно пользоваться, мгновенный отклик, быстро работает поиск. Красивое оформление. Мне понравилась больше светлая тема. Есть русский язык, но мне привычнее английский.

🔹У программы своя идея организации работы с заметками. На первом экране одноимённый с программой раздел Blinko. Это что-то вроде свалки идей. В течении дня вы быстро добавляете туда какие-то записи или файлы. Потом переходите в раздел Daily Review и поочереди просматриваете все добавленные и ещё не обработанные записи. Соответственно обрабатываете их и превращаете в Заметки (Notes). При желании можно сразу Notes создавать, минуя обработку и раздел Blinko.

🔹Данные могут храниться локально в директории на запущенном сервере или в S3. Можно загружать картинки и видео. Есть встроенный плеер для просмотра своих видео.

🔹Программа позволяет регистрироваться и работать разным пользователям. Совместной работы пока нет, но думаю, что появится. Это было бы логично. Не знаю, насколько безопасно выставлять окно с аутентификацией в публичный доступ. Я бы не стал это делать.

🔹Поддерживаются следующие типы заметок: список, нумерованный список, чек-лист, таблица, код, картинка, видео. Со смартфона можно сразу фотки прикреплять. Я попробовал, нормально работает.

🔹У Blinko удобный механизм для предоставления публичного доступа к заметкам, картинкам и видео. Просто жмёте на кнопку Copy share link и отправляете скопированную публичную ссылку. Человек сможет посмотреть видео через встроенный плеер, а не просто загрузить файл.

🔹Каталогизация заметок происходит на основе тэгов. При этом поддерживается вложенная иерархия. Выглядит почти так же, как и деление по проектам, папкам и блокнотам. Тэги появляются в левом меню, по ним можно быстро перемещаться.

🔹Поддерживается Markdown. Можно переносить записи с сохранением разметки. Импорта нет, перенос только вручную.

🔹Авторы делают акцент на интеграцию с ИИ. Поддерживаются провайдеры OpenAI и Ollama. С их помощью можно задавать человекоподобные запросы к своему хранилищу. Я не пробовал, как это работает, ничего сказать не могу.

В целом мне программа понравилась. Особенно будет актуально, если вам нужен сервис для нескольких человек. С такой функциональностью бесплатных self-hosted аналогов уже не так много. Подозреваю, что в скором будущем Blinko обзаведётся командной работой и облачной версией. И будет продаваться с сохранением open source в каком-то виде.

🌐 Исходники

#заметки
4👍77👎2
Популярный open source продукт, который можно развернуть на своём оборудовании, Gitlab требует для своей работы приличное количество ресурсов. Для того, чтобы он в установке по умолчанию работал бодрячком лучше всего начать с 4 CPU и 8 GB оперативной памяти. Можно выделить 4 GB, но будет заметно тормозить, иногда 500-е ошибки выдавать.

Для того, чтобы иметь возможность использовать Gitlab для единоличного использования, либо очень небольшого коллектива, многие из стандартных компонентов и настроек программного комплекса можно безболезненно отключить. В документации есть отдельная статья на этот счёт:

Running GitLab in a memory-constrained environment (Запуск GitLab в среде с ограниченным объемом памяти)

Следуя этим рекомендация, можно заставить работать систему с использованием всего 2 GB оперативной памяти. Если вы запускаете его для себя на арендованном железе, то можно получить существенную экономию ресурсов.

Я взял виртуальную машину с 1 CPU и 2 GB памяти и попробовал на ней запустить Gitlab. Что для этого нужно сделать?

1️⃣ Подключаем 1 GB свопа.

# dd if=/dev/zero of=/swap bs=1024 count=1000000
# mkswap /swap
# chmod 0600 /swap
# swapon /swap

Добавляем в /etc/fstab:

/swap swap swap defaults 0 0

2️⃣ Меняем параметр swappiness:

# sysctl vm.swappiness=10

Добавляем в /etc/sysctl.conf:

vm.swappiness=10

3️⃣ Устанавливаем Gitlab.

# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
# EXTERNAL_URL="https://10.20.1.36" apt-get install gitlab-ce

4️⃣ Отключаем службу puma, которая помогает обрабатывает конкурентные запросы. Без большой нагрузки можно обойтись без неё. В /etc/gitlab/gitlab.rb добавляем:

puma['worker_processes'] = 0

5️⃣ Уменьшаем число фоновых процессов Sidekiq:

sidekiq['concurrency'] = 10

6️⃣ Оптимизируем Gitaly. Туда же в конфиг добавляем:

gitaly['configuration'] = {
  concurrency: [
   {
    'rpc' => "/gitaly.SmartHTTPService/PostReceivePack",
    'max_per_repo' => 3,
   }, {
    'rpc' => "/gitaly.SSHService/SSHUploadPack",
    'max_per_repo' => 3,
   },
  ],
}

gitaly['env'] = {
 'GITALY_COMMAND_SPAWN_MAX_PARALLEL' => '2'
}

❗️Обращаю ваше внимание, что я убрал из этого раздела настройки, касающиеся cgroups. В инструкции судя по всему какая-то ошибка. Если их оставить, то сокет gitaly не поднимается. А в интерфейсе при создании каких-либо сущностей, например, нового проекта, вылетает 502 ошибка. И это не зависит от выделенных ресурсов.

7️⃣ Отключаем мониторинг:

prometheus_monitoring['enable'] = false

8️⃣ Уменьшаем потребление памяти процессам GitLab:

gitlab_rails['env'] = {
 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}

gitaly['env'] = {
 'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}

9️⃣ Перезапускаем Gitlab:

# gitlab-ctl reconfigure

🔟 Идём в веб интерфейс и отключаем в настройках мониторинга метрики Prometheus: Admin Area ⇨ Settings ⇨ Metrics and profiling ⇨ Metrics - Prometheus ⇨ отключаем Enable Prometheus Metrics.

После перезапуска Gitlab будет очень долго подниматься. Но в итоге заработает. Смотрим потребление памяти и проверяем, как всё работает:

# free -h

Более подробно всё это описано по ссылке в статье из начала заметки. Для комфортной работы лучше всё же добавить до 2CPU и 3GB памяти. Тогда всё это будет бодро работать с предложенными параметрами. Если этого не сделать, то иногда будете видеть 500-е ошибки.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#gitlab #devops #cicd
👍139👎4
Нашёл на github простой скрипт, который делает одну вещь - следит за конкретным лог файлом или набором файлов на предмет появления там заданных строк. Как только их видит, отправляет уведомление в Telegram.

https://github.com/dobanov/mon_log_and_send_keywords_to_telegram

Я проверил версию на python. Работает очень просто. Копируем репу:

# git clone https://github.com/dobanov/mon_log_and_send_keywords_to_telegram
# cd mon_log_and_send_keywords_to_telegram

Устанавливаем необходимые пакеты:

# apt install python3-pip python3-watchdog

Запускаем скрипт без параметров:

# python3 tg_mon.py

Он ругнётся, что не переданы параметры и нет файла конфигурации. Создаст пустой ~/.config/tg_log.ini. Заполняем его:

filename=/var/log/auth.log
keyword=Accepted password,session opened
n=100
bot_id=5731668668:AAFxcwvp8XjvepZzDMIAN87l1D_MuiI1Ve9
chat_id=210856265
debug=true

В этом примере я указал две строки из файла auth.log, куда записывается вся информация об SSH сессиях. В данном случае в Telegram прилетят две строки:

2024-12-04T18:35:23.679324+03:00 debian12-vm sshd[4282]: Accepted password for root from 10.8.2.2 port 9669 ssh2
2024-12-04T18:35:23.680422+03:00 debian12-vm sshd[4282]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)

То есть полная информация о подключении - IP адрес и пользователь.

Запускаем скрипт:

# python3 tg_mon.py

Открываем новую SSH сессию и наблюдаем уведомление в телеге. В данном случае обе строки не нужны, сделал так для примера.

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#script #logs
1👍238👎5
Прочитал интересную статью про Linux IOWait в блоге компании Percona. У автора оказались подозрительно русские имя и фамилия - Peter Zaitsev. Навёл справки. Оказалось, что это Пётр Зайцев - сооснователь компании Percona. Я и не знал, что эта компания основана русскими, хотя пользуюсь её бесплатными продуктами много лет.

Understanding Linux IOWait

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

# sysbench --threads=8 --time=0 --max-requests=0 fileio --file-num=1 --file-total-size=10G --file-io-mode=sync --file-extra-flags=direct --file-test-mode=rndrd run

Используется утилита sysbench. Я, кстати, писал про неё. У неё есть встроенные тесты для СУБД. Приведённая выше команда жёстко нагрузит метрику cpu iowait. Проверить можно через vmstat, колонка wa.

Пробуем дальше нагружать систему нагрузкой на процессор, не прерывая прошлый тест:

# sysbench --threads=8 --time=0 cpu run

Снова смотрим на vmstat и видим, что нагрузка IOWait куда-то пропала. Как так? Первый тест продолжает нагружать диски, но мы уже этого не видим в привычной метрике.

Смысл тут вот в чём. Когда мы долго ждём ответа от дисков, процессор простаивает. Растёт метрика cpu idle. Простой процессора из-за ожидания I/O засчитывается в метрику IOWait. Но как только мы нагружаем процессор другой работой, метрика idle падает, а за ней и IOWait. Это особенность подсчёта этих метрик.

Теперь вместо первого теста в 8 потоков, запустим только один на виртуалке с 4-мя ядрами:

# sysbench --threads=1 --time=0 --max-requests=0 fileio --file-num=1 --file-total-size=10G --file-io-mode=sync --file-extra-flags=direct --file-test-mode=rndrd run

Несмотря на то, что этот тест тоже полностью нагрузит дисковую подсистему, мы увидим IOWait в районе 20-25%. А на виртуальных машинах с большим числом ядер (32-64) цифра будет настолько незначительна, что мы можем вообще не заметить её. Но при этом дисковая подсистема будет полностью загружена.

Таким образом, высокая метрика IOWait показывает, что процессор ожидает операции I/O. Но при этом низкий показатель не гарантирует, что у вас не загружены диски. Надо уточнять.

Как же узнать, что у нас есть проблемы с нагрузкой по I/O? Можно посмотреть на столбец b в vmstat. Он показывает количество процессов, которые заблокированы в ожидании I/O для завершения. Соседний столбец r покажет суммарное число запущенных процессов.

В продукте Percona Monitoring and Management есть плагин, который в том числе показывает статистику по процессам. Там будут видны процессы, ожидающие I/O. Указанный мониторинг бесплатен, это open source.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #perfomance
3👍152👎7
Моя недавняя история с ошибкой MySQL таблицы получила неожиданное продолжение. Оно меня настолько удивило, что решил написать об этом отдельно. Напомню, что там побилась одна таблица базы движка InnoDB. Я попытался её починить, но когда понял, что данные можно потерять, просто удалил и пересоздал её, так как не хотелось на работающем сервере эксперименты ставить.

Сама ситуация для меня разрешилась благополучно, но не считаю, что оптимально. В следующий раз данные могут быть нужны. Поэтому я решил её проработать и записать решение, которое не приведёт к потере данных. Для этого я пометил бэкап виртуалки за ту ночь, как неудаляемый. А через некоторое время нашёл место, где её можно спокойно развернуть и поработать с ней.

☝️ Бэкап, кстати, почти всю ночь восстанавливался. И это очень долго. Поэтому я всегда делаю отдельно бэкапы данных внутри виртуалок. Систему можно поднять быстро, залить основные данные, нужные для запуска сервиса, а остальное копировать по ходу дела. Это если архитектура сервиса и данных позволяет.

Виртуалку я восстановил, запустил, убедился, что она работает и выключил. Позже появилось время с ней поработать более внимательно. Настроил там сеть, подключился и стал смотреть. Каково же было моё удивление, когда этой ошибки я там не обнаружил. СУБД работает нормально, CHECK TABLE отрабатывает нормально, дамп делается.

Сначала подумал, что перепутал версии бэкапа. Но нет. Создание дампа логируется локально. Посмотрел лог бэкапа, там последняя операция завершилась с ошибкой именно на той таблице. В логе службы mariadb за то время тоже видны ошибки с таблицей. Смотрю прямо на сервере:

2024-11-23T20:22:17.678755+03:00 mariadbd[738]: 2024-11-23 20:22:17 7451105 [Note] InnoDB: You can use CHECK TABLE to scan your table for 
corruption. Please refer to https://mariadb.com/kb/en/library/innodb-recovery-modes/ for information about forcing recovery.
2024-11-23T20:22:17.678779+03:00 mariadbd[738]: 2024-11-23 20:22:17 7451105 [ERROR] InnoDB: We detected index corruption in an InnoDB type table. You have to dump + drop + reimport the table or, in a case of widespread corruption, dump all InnoDB tables and recreate the whole tablespace. If the mariadbd server crashes after the startup or when you dump the tables. Please refer to https://mariadb.com/kb/en/library/innodb-recovery-modes/ for information about forcing recovery.
2024-11-23T20:22:17.678805+03:00 mariadbd[738]: 2024-11-23 20:22:17 7451105 [ERROR] Got error 126 when reading table 'b_stat_session_data'
2024-11-23T20:22:17.678833+03:00 mariadbd[738]: 2024-11-23 20:22:17 7451105 [ERROR] mariadbd: Index for table 'b_stat_session_data' is corrupt; try to repair it


После последней ошибки сервер пару раз перезагружался и вуаля, таблица починилась сама. Хотя никаких встроенных процедур по исправлению ошибок для InnoDB в MariaDB не предусмотрено. И по логам не видно, чтобы что-то делалось.

На основном сервере саму виртуалку я не перезагружал, но службу mariadb перезапускал. Мне тогда это не помогло.

Расстроился из-за этой ситуации, так как потратил кучу времени и всё без толку. Никаких рабочих рецептов не придумал. В следующий раз придётся опять разбираться, когда с этим столкнусь.

Как сказал один читатель к заметке про проблемы с СУБД. В базе иногда происходит какая-то неведомая хрень. Сразу понятен уровень специалиста. Знает, о чём говорит. Теперь я тоже знаю.

#mysql
👍134👎4
Когда-то давно у меня на канале была публикация про серию юмористических миниатюр на тему системного администратора и поддержки пользователей: Nick Burns, Your Company's Computer Guy (Ник Бернс, Компьютерщик из вашей компании). С тех пор прошло более 4-х лет, так что большая часть тех, кто читает канал сейчас, скорее всего её не видели.

Ни разу нигде не видел упоминания, перевода или хотя бы субтитров к этим миниатюрам. Лично мне эта серия кажется наиболее смешной и качественной на тему технической поддержки пользователей, хоть и снята была очень давно. Там и актёрский состав звездный. Из тех, что известны у нас - Джеки Чан и Дженнифер Энистон.

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

Было снято 5 серий, на ютубе почему-то только четыре. Вот они:

▶️ https://www.youtube.com/watch?v=25J3u3P-HHg
▶️ https://www.youtube.com/watch?v=AAEhk5t8rT0
▶️ https://www.youtube.com/watch?v=sqXm6h8A_UE
▶️ https://www.youtube.com/watch?v=jdL75nUBhN4

5-ю версию я с трудом нашел в интернете низкого качества и скачал, перезалил на свой яндекс.диск:

▶️ https://yadi.sk/i/pEPMYHzM72MXIg

Если кому-то нужна транскрипция на английском, можно найти на этом сайте - https://snltranscripts.jt.org/?s=Nick+Burns

Английский там простой, лично я на слух нормально воспринимаю. Можно посмотреть с переводом от Яндекс.Браузера, но получается уже не то. Смысл понятен, но как-то не смешно. Если будете смотреть с переводом, то ставьте громкость оригинальной дорожки на 80-90%.

Мне любопытно, кому-нибудь ещё это кажется смешным и интересным?

#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42👎9
В нескольких последних публикациях про СУБД регулярно появлялись комментарии что тут, что в ВК, что админу нафиг не сдались эти базы данных. Пусть в них DBA разбираются, а не мы. Я не разделяю такую точку зрения. Основные мои доводы следующие. Не претендую на истину, а делюсь своим мнением.

1️⃣ Широкий профиль специалиста делает его универсальным и более востребованным с точки зрения применения своих навыков. Проще говоря, сменить или найти работу легче. Получается более устойчивое положение.

2️⃣ Найти своё призвание, то, чем нравится и хочется заниматься - непростая задача. Для кого-то очень сложная, если не повезёт быстро разобраться в себе в юности. И в то же время эта одна из главных задач в жизни. Не найдя себя, всю жизнь можно прожить несчастным и нереализованным. Нужно пробовать себя в разных направлениях, изучать разные науки и сферы деятельности, чтобы понять, что тебе ближе. Чем больше растёшь вширь, тем быстрее это поймёшь. Исключение - если ты уже чётко знаешь, чего хочешь.

3️⃣ Работа в разных направлениях банально более разнообразна. Меньше устаёшь от рутины и однотипных действий. Легко спасаться от выгорания. Я помню на собеседовании парня из банка, который 3 года только тем и занимался, что обслуживал почтовый кластер. Больше в его ответственности ничего не было. Знания очень узкие. Мне нужен был системный администратор. Этот человек хоть формально и был им, но я его не взял, потому что он кроме почтовых серверов ничего не знал. Банк тогда просто закрылся. Думаю, ему было непросто найти работу на такие же деньги, но не на поддержку почтового сервера. Собственно, он и не мог её найти, поэтому пошёл на понижение в зарплате.

☝️Тему эту я начал не просто так, а как подводку к основному материалу, которым хотел поделиться. У небезызвестного Созыкина Андрея есть качественный бесплатный курс по основам SQL:

🎓 Основы SQL

Он состоит из видеолекций на ютубе, к которым прилагаются презентации. Плюс задачи и их решение тоже в формате видео. Курс небольшой, буквально по базе, которая пригодится для админа 👨‍💻 или девопса 🤹🏻‍♂️. Можно пройти за выходные. День на лекции, день на практики. Можно на новогодние отложить и заняться, когда надоест есть оливье. В качестве СУБД в курсе подразумевается PostgreSQL. Очень востребованная на текущий день система управления базами данных.

#обучение #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍159👎5
Ко мне недавно обратился заказчик, которому я почти 3 года назад настроил небольшую инфраструктуру для работы с файловыми базами 1С. Надо было кое-что изменить. Что самое удивительное, всё это время её никто не обслуживал от слова совсем. Только базы добавляли. Я подключился по SSH к серверам и увидел, что с начала 22-го года туда никто не подключался, кроме меня. Всё это время с базами работали через интернет без VPN. Кратко расскажу, что я там настроил с упором на безопасную работу без VPN.

Был арендован бюджетный выделенный сервер, на нём установлен Proxmox на raid1 mdadm. На нём настроены 3 виртуальные машины:

◽️Windows Server, где будет работать 1С
◽️Debian для Nginx и Apache Guacamole
◽️Debian для локальных бэкапов

На Proxmox настроен файрвол. Входящий доступ закрыт на всё. Исключение - ssh и web доступ к гипервизору по белым спискам IP. Сделано как резерв, основное подключение организовано по-другому. Настроены пробросы 80 и 443 портов в виртуалку с Nginx. На ней обязательно включен автозапуск.

На сервере с Nginx настроено проксирование запросов на Windows Server с 1С. Доступ к базам через доменное имя, слеш, имя базы. Доступ закрыт паролем через basic_auth. На этой же виртуалке поднят Apache Guacamole, а через него настроен доступ ко всем виртуалкам по SSH или RDP через браузер. Guacamole не стал закрывать через basic_auth, смотрит напрямую в инет. Можно было закрыть для большей безопасности.

На Windows сервере устанавливается как обычно платформа 1С и веб сервер Apache. Делается публикация баз. Всё стандартно. Пользователи этой системы работают только с ним. Точнее администратор 1С. Пользователи только через браузер работают с 1С. Порты RDP не пробрасываются. Сервер напрямую из интернета недоступен.

На третьем сервере настраивается Samba, создаётся сетевой диск с доступом только на чтение. Этот диск подключается к Windows машине. В этот сетевой диск ежедневно делаются бэкапы файловых баз, старые удаляются. Работает скрипт на самом сервере с бэкапами. Монтирует папку с Windows сервера и забирает файлы к себе, а отдаёт их уже только в режиме чтения. Это сделано, чтобы был оперативный доступ к бэкапам с Windows машины, но при этом их нельзя было удалить с неё. С самого бэкап сервера базы копируются куда-то во вне.

В такой конфигурации обслуживался только сервер с Windows. Его наличие - пожелание заказчика. Файловые базы могут и без него работать. Все остальные виртуалки даже не обновлялись. С учётом того, что кроме веб интерфейса Guacamole ничего не смотрит в интернет, проблем с этим не было.

Понятно, что тут есть что критиковать, заменять компоненты и т.д. Я прикинул, как можно было сделать по возможности просто и функционально и сделал. Эта инфраструктура реально проработала без обслуживания. Ничего не висло, не ломалось, не взламывалось. И работать было удобно. То есть поставленные задачи выполнялись.

#1С
5👍268👎3
В моих заметках про self-hosted сервера GIT постоянно возникали упоминания Gogs. Это тоже легковесный open source сервис GIT от китайских разработчиков. Причём упоминаемая несколько раз ранее Gitea является форком Gogs, который случился довольно давно. С тех пор Gitea развивается намного активнее, обросла дополнительной функциональностью, была приобретена коммерческой компанией и получила какие-то проблемы с лицензией, так что и её уже форкнули в новый проект Forgejo.

Если вам нужно простое хранилище кода с различной функциональностью только вокруг него, то Gogs будет оптимальным выбором с точки зрения потребления ресурсов. Там нет ни своего registry, ни инструментов для CI/CD, ни учёта времени, ни многих других возможностей, которые есть в той же Gitea.

При этом базовые возможности для совместной работы с кодом там будут:

- привычные профили пользователей, дашборды с активностью и т.д.;
- доступ к репам по ssh и https;
- веб редактор для работы с кодом и записями в wiki;
- аутентификация по паролям, через LDAP или SMTP (!) сервер
- управление пользователями, организациями, репозиториями.

В общем, тут только GIT и ничего больше. В качестве хранилища состояния могут использоваться PostgreSQL, MySQL, SQLite3 и TiDB. При использовании SQLite3 для запуска службы не нужно ничего, кроме самого бинарника gogs и установленного в системе git:

# apt update && apt install git -y
# wget https://dl.gogs.io/0.13.0/gogs_0.13.0_linux_amd64.tar.gz
# tar xzvf gogs_0.13.0_linux_amd64.tar.gz
# cd gogs
# ./gogs web

Запускается gogs в режиме веб сервера. Можно идти на 3000-й порт по IP адресу и выполнять настройку. Как я уже сказал, если выбрать в качестве СУБД SQLite3, то установка будет выполнена тут же, а база будет создана в файле data/gogs.db.

Веб интерфейс работает очень быстро и легко. Системные требования минимальны. Запускается на VPS с 512 МБ оперативной памяти. Есть русский язык. По умолчанию выбирается язык браузера. Чтобы его поменять, надо выйти к окну логина и там снизу выбрать. Я сначала долго искал, никак не мог понять, как изменить язык.

Доступа к сайту gogs.io без VPN нет. Как я понял, это блокировка со стороны РФ для хостера DigitalOcean. Сайт живёт на нём.

🌐 Сайт / Исходники

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#git
👍91👎8
Я анонсировал ранее подборку сайтов IT блогеров со статьями на различные темы, связанные с настройкой и эксплуатацией IT систем. Собралось небольшое сообщество авторов. Полный список сайтов будет в конце. А пока анонс новых статей тех авторов, кто согласился участвовать и прислал свои материалы.

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

Безопасная передача файлов с помощью Magic Wormhole
Использование специальной библиотеки для прямой шифрованной передачи файлов между распределенными клиентами. У библиотеки есть как консольная утилита, которую можно использовать вручную, либо в скриптах, так и GUI приложение.

Запускаем ИИ чат-бот локально. LM Studio
Запускаем ИИ чат-бот локально. LobeChat
Обзорная информация по запуску языковых моделей на своих серверах.

Tmux – установка и кастомизация + Nord theme
Подробная статья про установку, настройку и использование популярного терминального мультиплексора tmux.

Установка Graylog 6.1 на Debian 12
Краткая инструкция по установке и базовой настройке сервера сбора и анализа логов. Это чуть более простой в настройке аналог популярного ELK Stack. Про непосредственно сбор логов будут отдельные статьи.

Обновления безопасности Exchange Server за ноябрь 2024 г.
Обзор свежих обновлений безопасности почтового сервера Exchange.

ИТ переезд компании в новый офис
Основные этапы и рекомендации по успешному проведению переезда. К краткой текстовой выжимки прилагается более чем 2-х часовой видеоматериал.

Как установить Zabbix 7 на Ubuntu 24.04 с использованием веб-сервера Apache и базы данных MySQL
Подробная инструкция по установке перечисленной связки сервисов для запуска Zabbix Server.

Как установить Zabbix 7 на Ubuntu 24.04 с использованием веб-сервера NGINX, БД PostgreSQL, и расширением TimescaleDB
Другой стек для запуска Zabbix Server.

Отслеживание утечек секретов при разработке программных решений
Описание двух инструментов для поиска секретов в исходном коде приложений: Gitleaks и gitGrabber.

Критическая уязвимость в Zabbix: что известно и как защититься
Описание недавней CVE-2024-42327 в Zabbix Server.

Если кто-то хочет присоединиться к этой подборке, то пишите мне в личные сообщения. Пока список выглядит так:

▪️https://r4ven.me/
▪️https://wiki-it.ru/
▪️https://www.gurin.ru/
▪️https://sysadminhub.ru/
▪️https://it-skills.online/
▪️https://devopslife.ru/
▪️https://bite-byte.ru/
▪️https://sysadminium.ru/
▪️https://desoft.ru/
▪️https://www.pc360.ru/
▪️https://bafista.ru/
▪️https://it-experience.ru/
▪️https://blogadminday.ru/
▪️https://marukhin.ru/

#статьи
2👍108👎1
У Zabbix Server сегодня был релиз версии 7.2 Напомню, что это промежуточный, не LTS релиз. Данная версия будет поддерживаться 6 месяцев полной поддержкой, и 6 ограниченной, с выпуском только обновлений безопасности. Промежуточные релизы служат в основном для теста и отладки обновлений для LTS веток. Так что не спешите обновляться на эти версии, если у вас нет необходимости во что бы то ни стало получить новую функциональность. Я рабочие сервера обновляю только на LTS версии, а промежуточные ставлю на свой личный тестовый, да и то не всегда.

Полная информация на официальном сайте с картинками и на английском языке:

What’s new in Zabbix 7.2

Перечислю основные моменты со своими комментариями.

🔹Обновления визуализации и появление новых виджетов. Это основа обновлений данного релиза. Появился виджет Top items, который заменил собой устаревший Data overview (Обзор данных). Последний я активно использую. Например, на отдельные дашборды вывожу список айтемов с информацией о времени жизни сертификатов, доменов, статусы пиров asterisk или клиентов openvpn, уровень тонера в картриджах. Это универсальный виджет, который удобен для вывода точных значений айтемов. Попробуем новый виджет. Выглядит он поинтереснее старого.

Появилась новая диаграмма Sparkline chart, которую можно использовать в виджетах Top hosts, Top items, Item value. Смотрится неплохо.

Добавлен новый виджет Host card с подборкой информации о хосте. Особо не вижу применения для данного виджета, кроме быстрого доступа к Latest data. Лично я там провожу много времени в мониторингах.

🔹Добавлены новый шаблон для Nvidia GPU. Теперь можно мониторить видеокарты в связке с Zabbix Agent 2. Полезная штука для тех, кто использует видеокарты. Их как-то обычно стороной обходят.

Обновились шаблоны для мониторинга сертификатов и LAMP Stack. Я внимательно посмотрел ссылки на шаблоны, прочитал полностью Release Notes, но не смог найти подробностей обновлений. Надо пробовать. Для сертификатов описание такое же, как и было, а что имеется ввиду под шаблон для LAMP Stack я вообще не понял. Ссылки ведут на шаблон Zabbix Agent for Linux. Если у кого-то есть информация на этот счёт, пожалуйста, поделитесь.

Также масштабно обновился шаблон для VMware.

🔹Если я правильно понял описание, то доработали тип айтема на базе SSH агента, чтобы он мог подключаться туда, где разрешены только протоколы SFTP и NETCONF, а не полноценный SSH.

🔹Параметры компонентов Zabbix в файле конфигурации можно указывать в виде переменных. Сделано для упрощения использования в динамических средах. Не придётся свои костыли городить для подстановки значений из переменных в конфиг. Теперь их там можно сразу в виде переменных указывать.

🔹Добавлена поддержка PostgreSQL 17. Убрана поддержка Oracle DB. Судя по всему никто не использует эту СУБД для мониторинга.

Завтра будет 2 вебинара на английском утром и вечером по обновлениям этого релиза. Постараюсь посмотреть, если не отвлечёт ничего. Интересно посмотреть вживую на новые виджеты.

Кстати, последние обновления внешнего вида в Zabbix Server мне лично нравятся. Речь идёт об изменениях в 7.0 и далее. Я раньше критиковал Zabbix за его невыразительные визуализации. Но сейчас стало значительно лучше. Мне строгий светлый дизайн дашбордов Zabbix Server нравится больше, чем контрастный тёмный в Grafana. Он какой-т более мультяшный что ли. Чисто субъективное восприятие.

#zabbix
👍86👎2
Часто получал запросы на тему управления занятостью конференц-залов или переговорных комнат в офисах. Люди ищут и просят настроить какие-то программные продукты для этих целей. Мне знаком только один простой и удобный способ управления такими сущностями - на базе почтового сервера Exchange и его клиента Microsoft Outlook. Там всё сделано красиво и удобно. И сразу у всех в клиенте с интеграцией почты и задач. Это реально удобно и функционально.

Ничего другого, похожего на эти возможности я не знал и не видел, пока случайно не посмотрел видео одного англоязычного блогера, где он рассказал про open source проект cal.com, который как раз решает такую же задачу. С его помощью можно настроить публичные или закрытые календари, где можно будет выбрать дату и забронировать какой-то промежуток времени.

Всё это полностью бесплатно с возможностью развернуть на своём сервере. Для переговорок прям идеальное решение. Создаёте отдельный календарь. Делите на нём рабочий день на интервалы по 30 или 60 минут. Каждый желающий может зайти в календарь, выбрать свободный интервал и забронировать его. Всё это сопровождается дополнительной функциональной обвязкой: различные лимиты, обязательные промежутки между бронированиями, уведомления, вебхуки, подтверждения и т.д.

Продукт работает на Node.js, в качестве СУБД использует PostgreSQL. Можно установить вручную, можно взять готовый docker compose. Он подготовлен в отдельном репозитории:

# git clone https://github.com/calcom/docker.git
# cd docker
# cp .env.example .env
# docker compose up -d

Не забудьте в .env файле свои урлы поставить. И секреты поменять. Сгенерировать их можно так: openssl rand -base64 32. Посмотреть весь процесс установки и настройки, а также обзор возможностей, можно в подробном видео:

▶️ Cal.com - an open source, self hosted tool for scheduling mutual best times for meetings!

Календарь очень приглянулся. Удобный и функциональный. Есть русский язык и 24-х часовой формат времени. Проект, как обычно с платной облачной версией. Но при этом open source версия полнофункциональная, то есть без ограничений, но, понятное дело, некоторых возможностей из облачной версии в ней нет.

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

Когда-то давно, когда я задумывался о том, не организовать ли мне свою компанию, у меня были мысли как раз по такой открытости. Думал тогда, что наверное это наивно, быть открытым хотя бы для своих сотрудников внутри компании, чтобы каждый знал, сколько компания зарабатывает и какие у кого зарплаты. Мне казалось очень мотивирующим пропорциональное распределение доходов между всеми сотрудниками. В реальности я нигде такого не видел и думал, что эти мысли утопичны. Общение с собственниками компаний это подтверждали. Их опыт показывал, что это так просто не работает и вместо мотивации можно получить лишние проблемы. А у кого-то, оказывается, это получается. Это лишний раз подтверждает, что если у тебя есть какие-то идеи, надо поменьше рассуждать и побольше действовать. Чем больше раздумий и сомнений, тем меньше шансов сделать что-то новое.

🌐 Сайт / Исходники

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#управление
1👍145👎4