Если у вас есть большой MySQL сервер, то лишний раз трогать его не хочется, особенно если у него большой аптайм, настраивали его не вы, а у вас вообще разовая задача к нему. Нужно временно посмотреть или залогировать запросы и желательно с IP адресом тех, кто эти запросы делает. Могу предложить неочевидный способ.
Напомню, что включение штатного механизма query_log через файл конфигурации потребует перезапуска службы субд, что может занимать в некоторых случаях непрогнозируемое время. Если у вас есть рутовый дост к консоли севера, то можно сделать и без остановки:
В файле mysql.log будет фиксироваться время запроса и сам запрос. Адрес клиента не увидим. Для того, чтобы фиксировать адрес клиента, хранить лог запросов нужно будет в в отдельной таблице mysql.general_log. Это уже будет немного другая настройка, для которой понадобится перезапуск. Но заметку я хотел написать не об этом.
Мы можем посмотреть содержимое запросов в сетевых пакетах через tcpdump. Сразу важное дополнение. Сработает это только для нешифрованных соединений с СУБД. Внутри локальной инфраструктуры это чаще всего так. Догадался я до этого не сам, а подсмотрел в очень старой заметке на opennet.
Запускаем на любой машине, через которую проходит трафик к MySQL серверу. Можно прямо на нём:
Ждём, когда посыпятся запросы. Можно с соседней машины подключиться и позадавать их:
В файле tcpdump.out будет собран raw трафик в формате pcap. Распарсить его можно тут же в консоли с помощью tshark:
Получится файл, где всё содержимое будет удалено, кроме mysql запросов. Но при этом останутся пустые строки. Чистим их:
Можно поступить немного проще, преобразовав трафик сразу в обычные строки с помощью stdbuf и strings, а потом уже грепнуть по нужным запросам:
Если нужны метки времени, то добавляем с помощью awk:
Если хочется привязать запросы к IP адресам клиентов, то задача усложняется. Можно вывести содержимое пакетов вместе с остальной информацией, в том числе и об адресате пакета:
Но дальше уже нетривиальная задача по при вязке адресата к самому запросу, так как между ними постоянно возникает разное количество строк с информацией в бинарном виде. Проще будет вернуться к pcap и оттуда пытаться это вытаскивать и сопоставлять. А если нет задачи сохранять в лог файле, можно просто забрать к себе на машину и посмотреть дамп через Wireshark. Там отлично видно и адресатов, и запросы.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mysql #tcpdump
Напомню, что включение штатного механизма query_log через файл конфигурации потребует перезапуска службы субд, что может занимать в некоторых случаях непрогнозируемое время. Если у вас есть рутовый дост к консоли севера, то можно сделать и без остановки:
> SET GLOBAL general_log_file = '/var/log/mysql/mysql.log';
> SET GLOBAL general_log = 'ON';
В файле mysql.log будет фиксироваться время запроса и сам запрос. Адрес клиента не увидим. Для того, чтобы фиксировать адрес клиента, хранить лог запросов нужно будет в в отдельной таблице mysql.general_log. Это уже будет немного другая настройка, для которой понадобится перезапуск. Но заметку я хотел написать не об этом.
Мы можем посмотреть содержимое запросов в сетевых пакетах через tcpdump. Сразу важное дополнение. Сработает это только для нешифрованных соединений с СУБД. Внутри локальной инфраструктуры это чаще всего так. Догадался я до этого не сам, а подсмотрел в очень старой заметке на opennet.
Запускаем на любой машине, через которую проходит трафик к MySQL серверу. Можно прямо на нём:
# tcpdump -i ens18 port 3306 -s 1500 -w tcpdump.out
Ждём, когда посыпятся запросы. Можно с соседней машины подключиться и позадавать их:
# mysql -h 10.20.1.36 -u user01 -p
> use database;
> select * from users;
В файле tcpdump.out будет собран raw трафик в формате pcap. Распарсить его можно тут же в консоли с помощью tshark:
# apt install tshark
# tshark -r tcpdump.out -d tcp.port==3306,mysql -T fields -e mysql.query > query_log.out
Получится файл, где всё содержимое будет удалено, кроме mysql запросов. Но при этом останутся пустые строки. Чистим их:
# sed -i '/^$/d' query_log.out
Можно поступить немного проще, преобразовав трафик сразу в обычные строки с помощью stdbuf и strings, а потом уже грепнуть по нужным запросам:
# tcpdump -i ens18 -s 0 -U -w - dst port 3306 | stdbuf -i0 -o0 -e0 strings | grep -iE --line-buffered "(SELECT|UPDATE|INSERT|DELETE|SET|SHOW|COMMIT|ROLLBACK|CREATE|DROP|ALTER)"
Если нужны метки времени, то добавляем с помощью awk:
# tcpdump -i ens18 -s 0 -U -w - dst port 3306 | stdbuf -i0 -o0 -e0 strings | grep -iE --line-buffered "(SELECT|UPDATE|INSERT|DELETE|SET|SHOW|COMMIT|ROLLBACK|CREATE|DROP|ALTER)" | awk -W interactive '{print strftime("%F %T")" "$0}'
Если хочется привязать запросы к IP адресам клиентов, то задача усложняется. Можно вывести содержимое пакетов вместе с остальной информацией, в том числе и об адресате пакета:
# tcpdump -i ens18 -s 0 -A -Q in port 3306
Но дальше уже нетривиальная задача по при вязке адресата к самому запросу, так как между ними постоянно возникает разное количество строк с информацией в бинарном виде. Проще будет вернуться к pcap и оттуда пытаться это вытаскивать и сопоставлять. А если нет задачи сохранять в лог файле, можно просто забрать к себе на машину и посмотреть дамп через Wireshark. Там отлично видно и адресатов, и запросы.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mysql #tcpdump
3👍118👎4
Посмотрел очень интересное видео про снижение задержек в SSD дисках. Там и по теории прошлись, но в основном по практике. По шагам рассказали, что пробовали сделать, какие параметры ОС и софта меняли и к чему это приводило.
⇨ Как в Айри.рф сократили SSD-задержки в 61 раз
Мне такой формат выступления нравится, потому что его можно оформить в мини-инструкцию, зафиксировать основные моменты и потом использовать в своей работе. Так что я законспектировал выступление и выделил ключевые моменты, которые могут пригодиться.
У автора стал тормозить классический веб стек под Nginx. Увеличились как задержки на отдачу обычной статики пользователю из кэша, доходили до 1-2 секунд, так и динамические запросы мимо кэша. Было не понятно, с чем это связано. Использовались одиночные SSD диски Samsung Evo без рейда, файловая система ext4 поверх LVM разделов.
Начали разбор ситуации с выделения метрик и утилит для отслеживания отклика дисков:
◽️системный i/o wait
◽️метрики disk timings (статистика от Prometheus)
◽️утилиты ioping / iostat / iotop
◽️HTTP response time
Эти данные ничего не прояснили и не подсказали, куда в итоге надо смотреть и что делать. Далее начали анализировать очередь на запись операционной системы. На практике это никак не помогло понять, где возникают дисковые задержки.
Между приложением и диском есть несколько звеньев: буфер nginx, буфер ОС, очередь на запись. Каждый из этих этапов может добавлять задержку. Проанализировать всё это - нетривиальная задача.
Пробовали следующие изменения:
● асинхронные потоки в nginx через параметр
● уменьшение очереди на запись ОС:
не дало заметных улучшений
● изменение планировщика с cfq на deadline не принесло значимых изменений
● отключение журналирования через монтирование в fstab с параметром
● перенос логов nginx на внешние хранилища и отключение или перенос других системных логов еще уменьшили задержки на 10%.
Для дальнейшего анализа производительности сервиса решили привязаться к метрикам nginx для запросов, которые проходят мима кэша:
Что в итоге помогло больше всего?
🔹Отключение полностью журналирования на серверах с кэшем, который можно без последствий потерять
🔹Включение Trim по расписанию примерно тогда, когда объём диска предположительно полностью перезаписан. В данном случае это происходило примерно через неделю работы. Этот интервал и использовали. Я раз в сутки обычно ставлю на своих виртуалках.
🔹Использование tmpfs там, где это возможно. Уменьшает нагрузку на запись, увеличивает срок жизни SSD, работает только на небольших объёмах данных, которые можно потерять.
Каждый из этих шагов дал примерно в 2-3 раза снижение задержек. И в сумме получился заметный прирост для всего сервиса. Плюс, оптимизировали немного само приложение. И в итоге всё заработало в десятки раз быстрее.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#perfomance #disk
⇨ Как в Айри.рф сократили SSD-задержки в 61 раз
Мне такой формат выступления нравится, потому что его можно оформить в мини-инструкцию, зафиксировать основные моменты и потом использовать в своей работе. Так что я законспектировал выступление и выделил ключевые моменты, которые могут пригодиться.
У автора стал тормозить классический веб стек под Nginx. Увеличились как задержки на отдачу обычной статики пользователю из кэша, доходили до 1-2 секунд, так и динамические запросы мимо кэша. Было не понятно, с чем это связано. Использовались одиночные SSD диски Samsung Evo без рейда, файловая система ext4 поверх LVM разделов.
Начали разбор ситуации с выделения метрик и утилит для отслеживания отклика дисков:
◽️системный i/o wait
◽️метрики disk timings (статистика от Prometheus)
◽️утилиты ioping / iostat / iotop
◽️HTTP response time
Эти данные ничего не прояснили и не подсказали, куда в итоге надо смотреть и что делать. Далее начали анализировать очередь на запись операционной системы. На практике это никак не помогло понять, где возникают дисковые задержки.
Между приложением и диском есть несколько звеньев: буфер nginx, буфер ОС, очередь на запись. Каждый из этих этапов может добавлять задержку. Проанализировать всё это - нетривиальная задача.
Пробовали следующие изменения:
● асинхронные потоки в nginx через параметр
aio threads = default
; результат: снижение задержек на 5-10%;● уменьшение очереди на запись ОС:
vm_dirty_expire_centisecs=1
vm_dirty_writeback_centisecs=1
не дало заметных улучшений
● изменение планировщика с cfq на deadline не принесло значимых изменений
● отключение журналирования через монтирование в fstab с параметром
noatime
снизило на 10% задержки.● перенос логов nginx на внешние хранилища и отключение или перенос других системных логов еще уменьшили задержки на 10%.
Для дальнейшего анализа производительности сервиса решили привязаться к метрикам nginx для запросов, которые проходят мима кэша:
nginx_time_request
и nginx_upstream_header_time
. Анализ этих метрик позволил оценить производительность сервиса в целом: лучше он стал работать или нет. Я, кстати, тоже включаю метрику request_time для веб серверов, где требуется оценка производительности. Можно почитать об этом в моей статье Мониторинг производительности бэкенда с помощью ELK Stack.Что в итоге помогло больше всего?
🔹Отключение полностью журналирования на серверах с кэшем, который можно без последствий потерять
🔹Включение Trim по расписанию примерно тогда, когда объём диска предположительно полностью перезаписан. В данном случае это происходило примерно через неделю работы. Этот интервал и использовали. Я раз в сутки обычно ставлю на своих виртуалках.
🔹Использование tmpfs там, где это возможно. Уменьшает нагрузку на запись, увеличивает срок жизни SSD, работает только на небольших объёмах данных, которые можно потерять.
Каждый из этих шагов дал примерно в 2-3 раза снижение задержек. И в сумме получился заметный прирост для всего сервиса. Плюс, оптимизировали немного само приложение. И в итоге всё заработало в десятки раз быстрее.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#perfomance #disk
2👍162👎2
На неделе возникла небольшая задача по публикации баз 1С через веб сервер. Сделал всё быстро, так как выполнял эту задачу не раз и не два. Там всё относительно просто, если понимаешь, что к чему и как работает. Да и статей ни одну написал по этой теме. Но всё это было давно ещё на базе Centos. А сейчас у меня всё на Debian, так что решил сразу написать статью по этой теме.
⇨ Публикация баз 1С на веб севере Apache в Debian
Хотел по-быстрому всё сделать, чтобы потом, если придётся настраивать, просто копипастом всё сделать. Но как обычно разошёлся, написал и про лицензии, и про сеансы, и про обратное проксирование через второй веб сервер, и про распределение функциональности по виртуалкам. В общем, написал всё, что вспомнил по ходу дела. Хотел ещё и про логи, мониторинг, файрвол написать, но не стал. Времени не осталось, да и не захотелось всё в кучу мешать. Надо разделять на темы и объединять ссылками.
Давно не писал новые статьи. А мне это нравится. Прям натуральное удовольствие получаю от их написания. Есть какое-то призвание и способности к этому. Мечтаю, когда дети подрастут и снизится финансовая нагрузка, потратить часть времени на создание какой-то связанной информационной библиотеки или обучающих курсов на отдельные изолированные темы, типа мониторинга или сбора логов. Жаль, что современные технологии напрочь убили монетизацию обычных статейных сайтов. Уже по-всякому прикидывал и тестировал монетизацию, но увы, дохода там почти нет. На это не прожить и даже как дополнительный заработок не тянет, поэтому остаётся только как хобби.
Это я на всякий случай предупреждаю тех, кто может строить планы по созданию сайта и получению какого-то прямого дохода с него. Я по всем своим делам строго веду бухгалтерию и точно знаю, где и как я получаю доход. В лучшие годы баннеры от рекламных сетей приносили по 20-30 т.р. ещё в то время, когда их покупательская способность была выше. Это примерно 2019-2020 год. Потом в 22-м заблокировали Adsense и доход упал где-то до 5 т.р. Я сетевые баннеры вообще снял. Оставил ровно один от Яндекса в середине статей, чтобы он ранжирование не понижал. Яндекс отдаёт больше предпочтения тем сайтам, где есть его реклама.
С тех пор поддерживаю сайт в минимально живом виде, чтобы совсем не забрасывать. Хочется ещё когда-нибудь поработать над ним и сделать что-то интересное и полезное.
#1С #webserver
⇨ Публикация баз 1С на веб севере Apache в Debian
Хотел по-быстрому всё сделать, чтобы потом, если придётся настраивать, просто копипастом всё сделать. Но как обычно разошёлся, написал и про лицензии, и про сеансы, и про обратное проксирование через второй веб сервер, и про распределение функциональности по виртуалкам. В общем, написал всё, что вспомнил по ходу дела. Хотел ещё и про логи, мониторинг, файрвол написать, но не стал. Времени не осталось, да и не захотелось всё в кучу мешать. Надо разделять на темы и объединять ссылками.
Давно не писал новые статьи. А мне это нравится. Прям натуральное удовольствие получаю от их написания. Есть какое-то призвание и способности к этому. Мечтаю, когда дети подрастут и снизится финансовая нагрузка, потратить часть времени на создание какой-то связанной информационной библиотеки или обучающих курсов на отдельные изолированные темы, типа мониторинга или сбора логов. Жаль, что современные технологии напрочь убили монетизацию обычных статейных сайтов. Уже по-всякому прикидывал и тестировал монетизацию, но увы, дохода там почти нет. На это не прожить и даже как дополнительный заработок не тянет, поэтому остаётся только как хобби.
Это я на всякий случай предупреждаю тех, кто может строить планы по созданию сайта и получению какого-то прямого дохода с него. Я по всем своим делам строго веду бухгалтерию и точно знаю, где и как я получаю доход. В лучшие годы баннеры от рекламных сетей приносили по 20-30 т.р. ещё в то время, когда их покупательская способность была выше. Это примерно 2019-2020 год. Потом в 22-м заблокировали Adsense и доход упал где-то до 5 т.р. Я сетевые баннеры вообще снял. Оставил ровно один от Яндекса в середине статей, чтобы он ранжирование не понижал. Яндекс отдаёт больше предпочтения тем сайтам, где есть его реклама.
С тех пор поддерживаю сайт в минимально живом виде, чтобы совсем не забрасывать. Хочется ещё когда-нибудь поработать над ним и сделать что-то интересное и полезное.
#1С #webserver
Server Admin
Настройка публикации баз 1С на веб сервере в Debian
Пошаговая настройка веб-публикации баз 1С, расположенных на сервере на базе ОС Debian с помощью веб сервера Apache.
2👍185👎2
Для анализа сетевого трафика в первую очередь вспоминаешь про tcpdump. В принципе, он покрывает все основные потребности. Там можно посмотреть и отфильтровать всё, что угодно. Но не сказать, что он удобен и интуитивен, поэтому существуют более специализированные программы.
Я на днях увидел упоминание утилиты ngrep. Название показалось очень знакомым, как-будто я её знаю и уже писал о ней. Поискал по каналу и сайту и ничего не нашёл. Потом вспомнил, что спутал её с sngrep, которую я постоянно использовал, когда плотно работал с VOIP серверами. Очень её рекомендую, если приходится анализировать SIP протокол. Хотя скорее всего вы про неё знаете, если с ним работаете. Это очень удобная и функциональная утилита, известная в узких кругах.
Возвращаясь к ngrep. Это старая программа, которая есть в базовых репозиториях дистрибутивов. В некоторых случаях она будет удобнее tcpdump. Сразу покажу на конкретном примере. В качестве параметра ngrep принимает regex по содержимому пакетов. То есть можно сделать вот так:
И посмотреть информацию о пакетах, где есть строка HTTP. Собственно, это будут все пакеты данного протокола. В примере выше ключ
Ngrep умеет отображать содержимое пакетов с переходом на новую строку. Это особенно удобно для анализа HTTP или SMTP протокола. Как это выглядит, можно посмотреть на картинках снизу:
Подобным образом можно тут же в консоли отфильтровать все запросы с определённым User-Agent:
Чтобы не анализировать вообще весь трафик, его можно конкретизировать примерно таким же синтаксисом, как у tcpdump:
Указали интерфейс и порт. Если слушаете трафик на шлюзе, то можно конкретизировать сервер назначения, куда идёт трафик:
Host может принимать значения не только IP адреса, но и домена. Если смотрите на веб сервере запросы к конкретному домену, то указать адрес этого домена можно в фильтре для содержимого пакетов:
Подобные выборки по содержимому актуальны для всех протоколов, где иногда приходится заглядывать в сетевой трафик для дебага. Это упомянутый HTTP, а так же SMTP, SIP. Это из того, что я сам делал.
Например, смотрим обмен с конкретным почтовым сервером, добавляя метки времени:
Можно конкретизировать, если нужно посмотреть только EHLO:
Сохраните себе информацию о ngrep. Прямо здесь и сейчас вряд ли он нужен будет, но в будущем может пригодиться.
#network #terminal
Я на днях увидел упоминание утилиты ngrep. Название показалось очень знакомым, как-будто я её знаю и уже писал о ней. Поискал по каналу и сайту и ничего не нашёл. Потом вспомнил, что спутал её с sngrep, которую я постоянно использовал, когда плотно работал с VOIP серверами. Очень её рекомендую, если приходится анализировать SIP протокол. Хотя скорее всего вы про неё знаете, если с ним работаете. Это очень удобная и функциональная утилита, известная в узких кругах.
Возвращаясь к ngrep. Это старая программа, которая есть в базовых репозиториях дистрибутивов. В некоторых случаях она будет удобнее tcpdump. Сразу покажу на конкретном примере. В качестве параметра ngrep принимает regex по содержимому пакетов. То есть можно сделать вот так:
# ngrep -q 'HTTP'
И посмотреть информацию о пакетах, где есть строка HTTP. Собственно, это будут все пакеты данного протокола. В примере выше ключ
-q
означает отображать только сетевые пакеты. Непонятно зачем ngrep без этого ключа рисует полоску из псевдографики в консоли, когда ожидает пакеты. Ngrep умеет отображать содержимое пакетов с переходом на новую строку. Это особенно удобно для анализа HTTP или SMTP протокола. Как это выглядит, можно посмотреть на картинках снизу:
# ngrep -q 'HTTP' -W byline
Подобным образом можно тут же в консоли отфильтровать все запросы с определённым User-Agent:
# ngrep -q 'YaBrowser' -W byline
Чтобы не анализировать вообще весь трафик, его можно конкретизировать примерно таким же синтаксисом, как у tcpdump:
# ngrep -q 'YaBrowser' -W byline -d ens18 port 80
Указали интерфейс и порт. Если слушаете трафик на шлюзе, то можно конкретизировать сервер назначения, куда идёт трафик:
# ngrep -q 'YaBrowser' -W byline 'host 10.20.1.36 and port 80 or 443'
Host может принимать значения не только IP адреса, но и домена. Если смотрите на веб сервере запросы к конкретному домену, то указать адрес этого домена можно в фильтре для содержимого пакетов:
# ngrep -q 'example.com' -W byline 'port 80 or 443'
Подобные выборки по содержимому актуальны для всех протоколов, где иногда приходится заглядывать в сетевой трафик для дебага. Это упомянутый HTTP, а так же SMTP, SIP. Это из того, что я сам делал.
Например, смотрим обмен с конкретным почтовым сервером, добавляя метки времени:
# ngrep -q '' -t -W byline 'port smtp and host 94.142.141.246'
Можно конкретизировать, если нужно посмотреть только EHLO:
# ngrep -q -i 'EHLO' -t -W byline 'port smtp and host 94.142.141.246'
Сохраните себе информацию о ngrep. Прямо здесь и сейчас вряд ли он нужен будет, но в будущем может пригодиться.
#network #terminal
2👍123👎3
В одном интервью человека, который занимается наймом системных администраторов, услышал мельком вопрос, который он иногда задаёт на собеседованиях.
❓У вас непрогнозируемо и очень быстро растёт размер базы данных. Что вы будете экстренно предпринимать в связи с этим?
Ответа там не было, как и конкретики, какая СУБД имеется ввиду. Решил немного порассуждать на эту тему на примере MySQL, как наиболее простой и популярной СУБД. Сразу скажу, что я так вот сходу не знаю, как быстро решать такие проблемы. Просто немного подумал и прикинул, что бы я стал делать.
1️⃣ Первым делом я бы зашёл на сервере в консоль, открыл mysql клиент и запустил там:
или так, чтобы было удобнее смотреть:
Это первое, что приходит в голову. В нагруженном сервере список будет очень большой и по нему понять, что происходит, не всегда возможно. Если это какой-нибудь Битрикс, то там будут длиннющие запросы от одного и того же клиента в виде веб сервера. Тем не менее, получить какое-то представление о том, что происходит на сервере можно. Тем более, если там много баз данных, то можно заметить, что есть аномально большое количество запросов к одной из них.
Так как у нас стоит вопрос о росте базы данных, имеет смысл отфильтровать запросы по типу, оставив только UPDATE и INSERT. По идее именно они загружают данные в таблицы:
2️⃣ Для более детального просмотра активности в режиме реального времени можно запустить Mytop и посмотреть информацию там. Можно быстро фильтрануть по клиентам и базам данных, чтобы быстрее определить аномалии.
3️⃣ Параллельно я бы посмотрел размер таблиц. Можно просто отсортировать файлы по размеру в директории
У меня есть отдельная заметка по таким прикладным запросам.
Таким образом у нас есть информация о клиентах, которые подключаются к базе данных и информация о том, какие таблицы или таблица растут. Подключения клиентов можно посчитать, если на глазок не видно, от кого их больше всего.
Если тут уже получилось догадаться, кто заливает информацию в базу, то можно либо какую-то функциональность починить, если она сломалась, либо можно изменить пароль пользователя, чтобы отключить его, или забанить его по IP на файрволе и дальше разбираться.
Если причина роста базы в том, что кто-то просто заливает туда много данных, то по идее нам полученной информации достаточно, чтобы это прекратить. На этом моя фантазия по расследованию кончилась.
В памяти всплыло ещё то, что размер базы раздувают индексы. Возможно кто-то их лепит на автомате, что приводит к росту базы. По идее это всё тоже будет видно в списке процессов как запросы с
Если вам есть, чем дополнить заметку и ответить на поставленный вопрос, с удовольствием почитаю. Кстати, этот вопрос в разных интерпретациях позадавал ChatGPT. Ничего содержательного не ответил. Я потихоньку стал им пользоваться, а то столько восторженных отзывов слышал. Если честно, лично я не впечатлён. Точные ответы он знает на то, что и так быстро ищется через поисковики. А если где-то надо подумать, то там в основном вода.
#mysql
❓У вас непрогнозируемо и очень быстро растёт размер базы данных. Что вы будете экстренно предпринимать в связи с этим?
Ответа там не было, как и конкретики, какая СУБД имеется ввиду. Решил немного порассуждать на эту тему на примере MySQL, как наиболее простой и популярной СУБД. Сразу скажу, что я так вот сходу не знаю, как быстро решать такие проблемы. Просто немного подумал и прикинул, что бы я стал делать.
1️⃣ Первым делом я бы зашёл на сервере в консоль, открыл mysql клиент и запустил там:
> SHOW FULL PROCESSLIST;
или так, чтобы было удобнее смотреть:
# mysql -e "SHOW FULL PROCESSLIST;" > ~/processlist.txt
Это первое, что приходит в голову. В нагруженном сервере список будет очень большой и по нему понять, что происходит, не всегда возможно. Если это какой-нибудь Битрикс, то там будут длиннющие запросы от одного и того же клиента в виде веб сервера. Тем не менее, получить какое-то представление о том, что происходит на сервере можно. Тем более, если там много баз данных, то можно заметить, что есть аномально большое количество запросов к одной из них.
Так как у нас стоит вопрос о росте базы данных, имеет смысл отфильтровать запросы по типу, оставив только UPDATE и INSERT. По идее именно они загружают данные в таблицы:
> SELECT * FROM information_schema.processlist WHERE `INFO` LIKE 'UPDATE %';
> SELECT * FROM information_schema.processlist WHERE `INFO` LIKE 'INSERT %';
2️⃣ Для более детального просмотра активности в режиме реального времени можно запустить Mytop и посмотреть информацию там. Можно быстро фильтрануть по клиентам и базам данных, чтобы быстрее определить аномалии.
3️⃣ Параллельно я бы посмотрел размер таблиц. Можно просто отсортировать файлы по размеру в директории
/var/lib/mysql/database_name
. В MySQL чаще всего каждая таблица в отдельном файле. Либо можно зайти клиентом и посмотреть там:> SELECT table_schema as `Database`, table_name AS `Table`, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "database_name" ORDER BY (data_length + index_length) DESC;
У меня есть отдельная заметка по таким прикладным запросам.
Таким образом у нас есть информация о клиентах, которые подключаются к базе данных и информация о том, какие таблицы или таблица растут. Подключения клиентов можно посчитать, если на глазок не видно, от кого их больше всего.
Если тут уже получилось догадаться, кто заливает информацию в базу, то можно либо какую-то функциональность починить, если она сломалась, либо можно изменить пароль пользователя, чтобы отключить его, или забанить его по IP на файрволе и дальше разбираться.
Если причина роста базы в том, что кто-то просто заливает туда много данных, то по идее нам полученной информации достаточно, чтобы это прекратить. На этом моя фантазия по расследованию кончилась.
В памяти всплыло ещё то, что размер базы раздувают индексы. Возможно кто-то их лепит на автомате, что приводит к росту базы. По идее это всё тоже будет видно в списке процессов как запросы с
CREATE INDEX
. Проблемного клиента можно отключить, индексы удалить, базу оптимизировать. Но тут я уже темой не владею. Не знаю, сколько и как этих индексов можно насоздавать и реально ли это может привести к лавинообразному росту объема занимаемого пространства на диске. Если вам есть, чем дополнить заметку и ответить на поставленный вопрос, с удовольствием почитаю. Кстати, этот вопрос в разных интерпретациях позадавал ChatGPT. Ничего содержательного не ответил. Я потихоньку стал им пользоваться, а то столько восторженных отзывов слышал. Если честно, лично я не впечатлён. Точные ответы он знает на то, что и так быстро ищется через поисковики. А если где-то надо подумать, то там в основном вода.
#mysql
Telegram
ServerAdmin.ru
Для мониторинга загрузки сервера MySQL в режиме реального времени есть старый и известный инструмент - Mytop. Из названия понятно, что это топоподобная консольная программа. С её помощью можно смотреть какие пользователи и какие запросы отправляют к СУБД.…
👍104👎6
⇨ GitLab CI/CD - Полный DevOps Pipeline с НУЛЯ, Создание Docker Image и деплой в AWS Lambda
⇨ GitLab - Как работать используя TOKEN
Продолжение начатой ранее автором темы про Gitlab и CI/CD на его основе. Если самостоятельно изучаете эту тему, то видео будут отличным подспорьем. Автор хорошо объясняет, показывает на примерах.
⇨ KEYNOTE by Alexei Vladishev / Zabbix Summit 2024
У Zabbix недавно прошёл масштабный саммит. Они выложили на своём канале кучу видео оттуда. Посмотрите, может вас заинтересуют какие-то темы. Мне очень хочется некоторые видео посмотреть и разобрать, но не знаю, найду ли для этого время. Хотя бы посмотреть надо для начала. Там и мониторинг MariaDB, и новый веб мониторинг, и самописные проверки по tcp, и мониторинг DNS, и тюнинг производительности, и т.д. В общем, интересно.
⇨ Proxmox Network. Обзор и настройка. Bridge, Bond, VLAN.
Очень подробное наглядное видео с картинками и схемами по организации виртуальной сети в Proxmox. Рассмотрены не только тривиальные случаи. Например, автор рассказал, как настроить две изолированные подсети виртуалок, в которой каждая подсеть выходит в инет через свой роутер. Там же он создаёт и тестирует Bond - объединение сетевых адаптеров для отказоустойчивости.
⇨ Настройка мониторинга c помощью Grafana InfluxDB Prometheus Telegraf
Большое видео на тему установки и настройки указанного стэка. Я похожий стэк тестировал и писал об этом: TICK Stack. Из своих изысканий не особо понял, зачем нужно использовать Telegraf и InfluxDB. Из плюсов только то, что это и метрики, и логи в одном месте. Но сейчас есть Loki для этого, и я бы отдал предпочтение ему.
⇨ Какой софт у меня в моей homelab в 2024
Интересно было посмотреть, как всё организовано у автора. У него один общий сервер под Proxmox и там виртуалки с контейнерами: opnsense, truenas, pbs, pi-hole, nut, homapage, plex, sonarr, nextcloud и т.д. Он рассказал не только про софт, но и про организацию сети. Почти по всему софту у него есть отдельные ролики.
⇨ Best Docker Update Image Tools for Automating Container Updates
Обзор софта, который умеет автоматически обновлять образы контейнеров: Watchtower, Shepherd, Portainer, CI/CD pipelines.
⇨ Как быстро определить версию дистрибутива Linux и эффективно управлять пакетами?
Небольшое справочное видео по теме. Заголовок немного некорректно подобран, так как в видео в основном про пакеты речь идёт, а про версию ОС в самом начале. Автор предлагает смотреть так:
cat /etc/*release
. Я лично привык использовать hostnamectl. Так не только ОС видно, но тип виртуализации и некоторую другую информацию. ⇨ Reacting to your CURSED Homelab Setups
Длинное развлекательное видео, где автор показывает и обсуждает домашние лаборатории своих пользователей. Ранее он просил прислать картинки и описание своих домашних лабораторий, а теперь обработал всё это и оформил в видео.
⇨ How To Rebrand Zabbix 7.0 ( Replace Logos )
Небольшое обзорное видео на тему брендирования своего сервера Zabbix с заменой логотипа.
⇨ MiniTool ShadowMaker - простая и бесплатная программа для бекапа и восстановления системы
Рекламный обзор небольшой бесплатной версии программы для бэкапа ОС Windows. У программы, соответственно, есть и коммерческая версия. На вид вроде ничего особенного по сравнению с другими подобными программами. Посмотрите, может вам приглянется.
В подписках было много видео с рекламой различных продуктов, типа того, что выше. Понимал об этом по UTM меткам в ссылках с описанием. При этом сами блогеры явно не говорят, что публикуют оплаченный рекламный обзор. Это как-то некрасиво. Привык уже к нашему закону о рекламе, где блогеров обязали маркировать и явно указывать, что они публикуют рекламу. Для конечного пользователя это большой плюс.
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
GitLab CI/CD - Полный DevOps Pipeline с НУЛЯ, Создание Docker Image и деплой в AWS Lambda
#devops #gitlab #девопс
https://gitlab.com/adv4000/myproject2
Если помог, поддержите парой баксов, даже Канадских :)
Boosty: https://boosty.to/adv-it/donate
PayPal: https://www.paypal.me/DenisAstahov
https://gitlab.com/adv4000/myproject2
Если помог, поддержите парой баксов, даже Канадских :)
Boosty: https://boosty.to/adv-it/donate
PayPal: https://www.paypal.me/DenisAstahov
3👍79👎4
Media is too big
VIEW IN TELEGRAM
Рекламное видео стола для работы стоя с кликбейтным заголовком и откровенным враньём (я про заголовок и описание):
▶️ https://www.youtube.com/watch?v=WwnzntwEKig
Тем не менее, решил вынести его в отдельную публикацию и немного прокомментировать, так как мне есть что сказать об этом. И это сможет вам помочь, если у вас проблемы со спиной. Кто меня давно читает, знает, что у меня, как и у многих с сидячим образом жизни, есть проблемы со спиной. Я писал об этом в разное время. В том числе и про стол для работы стоя. Я им пользовался несколько лет, сейчас перестал. Отдал сыну под рабочий стол. Удобно, так как он растёт и можно под рост регулировать высоту. В стоячем столе нет ничего плохого или особенно полезного. Если вам нравится, можете за ним работать. Я сейчас спокойно работаю сидя.
У меня есть цикл статей с тэгом #спина, где я очень подробно рассказал, как избавил себя от болей. Уже прошло некоторое время, можно прокомментировать все мои описанные ранее действия. Если не читали, то начинайте с самой старой публикации и до этой. Если не читать старые, то пользы от этой не будет.
Основная причина болей в спине и не только - перегрузка мышц либо из-за большой разовой нагрузки, типа подъёма тяжести, либо из-за постоянной статической нагрузки, типа сидения с напряжённой спиной. Если понять этот принцип, то дальше уже будет проще. Вы сами отбросите варианты в виде коленных стульев или фитболов вместо стула. Это верный способ усугубить свою ситуацию кратно, так как вы будете сидеть с вечной статической нагрузкой в мышцах. Это я всё тоже проходил, когда пытался сидеть с прямой спиной. Сидеть надо так, чтобы все мышцы были максимально расслаблены. Как это будет организовано - вторично. У каждого свои особенности тела, привычки, проблемы. Главное понять принцип.
В моих прошлых публикациях я уже писал о том, что мне реально помогло - миопрессура. Я побывал у специалистов, понял принцип. Сейчас лично мне помогает жена ежедневной прессурой проблемных мест. Занимает 20-30 минут. Так как у меня проблем много (шея, вся спина, частично ноги до колен), ситуация сильно запущена и уже осложнена миофиброзом, мне приходится заниматься этим постоянно, чтобы ничего не болело. Плюс, я целый день работаю сидя. В простых случаях нужно только время от времени делать профилактику.
Метод простой и рабочий на 100%. Убедился уже неоднократно на родственниках. Избавил от болей в колене супругу, помог отцу с поясницей, объяснив принцип лечения. Он сам занимается с теннисным мячиком. С тех пор больше не было обострений в пояснице. А иногда даже вставать не мог, ползал на карачках. На днях узнал, что сестра мучается с болями в спине уже 3 недели!!! Прошла по стандартной программе от неврологов, была у остеопата и гомеопата. Понятное дело, что это не помогло. Они реально не лечат, так как даже не вникают в суть проблемы. Я приехал, просто руками потрогал её мышцы. Нашёл те, что жёстче остальных. Хорошенько размял все проблемные зоны. Скинул пару видео о том, как выполнять профилактику с мячиками, показал, какие лучше купить, так как сам пользовался.
Через пару дней она мне написала:
Привет. У меня спина уже получше. Сегодня уже делала массаж шариками. Жаль, что раньше про них не знала. Делаю душ и растяжку. За два дня полегчало.
Многим рассказывал про это лечение, но большинство людей не воспринимают информацию, пока не допечёт так, что боль делает жизнь невыносимой. Тогда включается голова и человек начинает пробовать всё, что теоретически может помочь. Так что кого-то убеждать и спорить не буду. Напомню, что я хроник с большим стажем и пробовал всё более-менее популярное и доступное из лечения. Миопрессура относительно проста и эффективна. И главное, практически сразу помогает. Попробуйте. И не нужны будут чудо стулья, столы, матрасы, подушки, подкладки на сиденье в машине и т.д. Я ничем этим не пользуюсь и нормально живу. Одно время был в такой депрессии от нахлынувших болей, что не понимал, как буду жить.
Если у кого-то есть вопросы по теме, то можете задавать тут или в личку. Я всем отвечу, если это сможет вам помочь.
#спина
Тем не менее, решил вынести его в отдельную публикацию и немного прокомментировать, так как мне есть что сказать об этом. И это сможет вам помочь, если у вас проблемы со спиной. Кто меня давно читает, знает, что у меня, как и у многих с сидячим образом жизни, есть проблемы со спиной. Я писал об этом в разное время. В том числе и про стол для работы стоя. Я им пользовался несколько лет, сейчас перестал. Отдал сыну под рабочий стол. Удобно, так как он растёт и можно под рост регулировать высоту. В стоячем столе нет ничего плохого или особенно полезного. Если вам нравится, можете за ним работать. Я сейчас спокойно работаю сидя.
У меня есть цикл статей с тэгом #спина, где я очень подробно рассказал, как избавил себя от болей. Уже прошло некоторое время, можно прокомментировать все мои описанные ранее действия. Если не читали, то начинайте с самой старой публикации и до этой. Если не читать старые, то пользы от этой не будет.
Основная причина болей в спине и не только - перегрузка мышц либо из-за большой разовой нагрузки, типа подъёма тяжести, либо из-за постоянной статической нагрузки, типа сидения с напряжённой спиной. Если понять этот принцип, то дальше уже будет проще. Вы сами отбросите варианты в виде коленных стульев или фитболов вместо стула. Это верный способ усугубить свою ситуацию кратно, так как вы будете сидеть с вечной статической нагрузкой в мышцах. Это я всё тоже проходил, когда пытался сидеть с прямой спиной. Сидеть надо так, чтобы все мышцы были максимально расслаблены. Как это будет организовано - вторично. У каждого свои особенности тела, привычки, проблемы. Главное понять принцип.
В моих прошлых публикациях я уже писал о том, что мне реально помогло - миопрессура. Я побывал у специалистов, понял принцип. Сейчас лично мне помогает жена ежедневной прессурой проблемных мест. Занимает 20-30 минут. Так как у меня проблем много (шея, вся спина, частично ноги до колен), ситуация сильно запущена и уже осложнена миофиброзом, мне приходится заниматься этим постоянно, чтобы ничего не болело. Плюс, я целый день работаю сидя. В простых случаях нужно только время от времени делать профилактику.
Метод простой и рабочий на 100%. Убедился уже неоднократно на родственниках. Избавил от болей в колене супругу, помог отцу с поясницей, объяснив принцип лечения. Он сам занимается с теннисным мячиком. С тех пор больше не было обострений в пояснице. А иногда даже вставать не мог, ползал на карачках. На днях узнал, что сестра мучается с болями в спине уже 3 недели!!! Прошла по стандартной программе от неврологов, была у остеопата и гомеопата. Понятное дело, что это не помогло. Они реально не лечат, так как даже не вникают в суть проблемы. Я приехал, просто руками потрогал её мышцы. Нашёл те, что жёстче остальных. Хорошенько размял все проблемные зоны. Скинул пару видео о том, как выполнять профилактику с мячиками, показал, какие лучше купить, так как сам пользовался.
Через пару дней она мне написала:
Привет. У меня спина уже получше. Сегодня уже делала массаж шариками. Жаль, что раньше про них не знала. Делаю душ и растяжку. За два дня полегчало.
Многим рассказывал про это лечение, но большинство людей не воспринимают информацию, пока не допечёт так, что боль делает жизнь невыносимой. Тогда включается голова и человек начинает пробовать всё, что теоретически может помочь. Так что кого-то убеждать и спорить не буду. Напомню, что я хроник с большим стажем и пробовал всё более-менее популярное и доступное из лечения. Миопрессура относительно проста и эффективна. И главное, практически сразу помогает. Попробуйте. И не нужны будут чудо стулья, столы, матрасы, подушки, подкладки на сиденье в машине и т.д. Я ничем этим не пользуюсь и нормально живу. Одно время был в такой депрессии от нахлынувших болей, что не понимал, как буду жить.
Если у кого-то есть вопросы по теме, то можете задавать тут или в личку. Я всем отвечу, если это сможет вам помочь.
#спина
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍141👎8
У меня есть старый сервер, в котором используется рейд контроллер Adaptec RAID 6805E. Ему лет 10-12. Раньше эти контроллеры были распространены, но со временем их почти полностью заменили контроллеры от LSI. Тестировал программу для мониторинга за SMART жёстких дисков и озадачился. А можно ли посмотреть информацию о дисках за этим рейд контроллером?
В общем случае операционная система не видит информацию о дисках, которые подключены через рейд контроллер, особенно если из них собраны массивы. В брендовых серверах такую информацию проще всего брать по SNMP или IPMI от BMC (Baseboard Management Controller) сервера. Второй вариант - поставить управляющий софт контроллера в операционную систему. Это немного сложнее, потому что скорее всего понадобится дополнительно установить модуль ядра. Для контроллеров LSI есть программа MegaCli, которая развивается и поддерживается. Я много раз её ставил и мониторил диски.
Для Adaptec оказывается всё не намного сложнее. До сих пор жив сайт и доступны драйвера для указанного контроллера:
⇨ https://storage.microsemi.com/en-us/support/raid/sas_raid/sas-6805e/
Основная проблема - они давно не обновляются. Самая свежая версия от 2016 года и под Debian 8. У нас уже Debian 12 под капотом Proxmox. Скачал представленный архив, там пакет. Установил его:
Никаких ошибок не было. Перезагрузил сервер, проверяю:
Модуль ядра загружен. Проверяю контроллер:
Всё работает. Смотрю состояние собранных массивов:
Смотрю информацию о дисках:
Всё нормально отображает. Теперь можно и SMART посмотреть. Если стоит софт от контроллера, то smartctl может работать с дисками за контроллером примерно так же, как и с обычными:
Увидим информацию о самом первом диске на первом контроллере. Если не ошибаюсь, то первый
Таким образом можно использовать информацию от smartctl в любом мониторинге, который построен на его базе. Либо можно взять шаблон Zabbix, который работает через парсинг вывода arcconf.
❗️Если у вас где-то в проде всё ещё работают такие контроллеры, то не рекомендую без веских оснований ставить этот софт. Всё же он очень старый и могут возникнуть какие-то проблемы на современных системах. Нет смысла рисковать без особой надобности.
#железо
В общем случае операционная система не видит информацию о дисках, которые подключены через рейд контроллер, особенно если из них собраны массивы. В брендовых серверах такую информацию проще всего брать по SNMP или IPMI от BMC (Baseboard Management Controller) сервера. Второй вариант - поставить управляющий софт контроллера в операционную систему. Это немного сложнее, потому что скорее всего понадобится дополнительно установить модуль ядра. Для контроллеров LSI есть программа MegaCli, которая развивается и поддерживается. Я много раз её ставил и мониторил диски.
Для Adaptec оказывается всё не намного сложнее. До сих пор жив сайт и доступны драйвера для указанного контроллера:
⇨ https://storage.microsemi.com/en-us/support/raid/sas_raid/sas-6805e/
Основная проблема - они давно не обновляются. Самая свежая версия от 2016 года и под Debian 8. У нас уже Debian 12 под капотом Proxmox. Скачал представленный архив, там пакет. Установил его:
# dpkg -i aacraid-1.2.1-52011-Debian8.1-x86_64.deb
Никаких ошибок не было. Перезагрузил сервер, проверяю:
# lsmod | grep aacraid
aacraid 143360 31
Модуль ядра загружен. Проверяю контроллер:
# arcconf getconfig 1 AD
Controllers found: 1
----------------------------------------------------------------------
Controller information
----------------------------------------------------------------------
Controller Status : Optimal
Channel description : SAS/SATA
Controller Model : Adaptec 6805E
.........
Всё работает. Смотрю состояние собранных массивов:
# arcconf getconfig 1 LD
Смотрю информацию о дисках:
# arcconf getconfig 1 PD
Всё нормально отображает. Теперь можно и SMART посмотреть. Если стоит софт от контроллера, то smartctl может работать с дисками за контроллером примерно так же, как и с обычными:
# smartctl -a -d "aacraid,0,0,0" /dev/sda
Увидим информацию о самом первом диске на первом контроллере. Если не ошибаюсь, то первый
0
- контроллер, вторые два нуля это Reported Channel,Device(T:L) : 0,0(0:0)
в описании дисков через arcconf getconfig 1 PD
. Проверил у себя, у меня совпадает. Таким образом можно использовать информацию от smartctl в любом мониторинге, который построен на его базе. Либо можно взять шаблон Zabbix, который работает через парсинг вывода arcconf.
❗️Если у вас где-то в проде всё ещё работают такие контроллеры, то не рекомендую без веских оснований ставить этот софт. Всё же он очень старый и могут возникнуть какие-то проблемы на современных системах. Нет смысла рисковать без особой надобности.
#железо
👍74👎2
Для мониторинга за S.M.A.R.T одиночного сервера есть простой open source проект - Scrutiny. Он состоит из сборщика метрик с помощью smartmontools, веб интерфейса для отображения данных и оповещений через различные каналы связи.
Scrutiny можно установить вручную из отдельных компонентов, но проще, конечно, запустить в Docker контейнере. Инструкция из репозитория предлагает сделать это так:
То есть мы пробрасываем диски внутрь контейнера и добавляем необходимые права, чтобы можно было увидеть SMART. Если у вас контейнеры крутятся прямо на железе, то это самый простой и быстрый вариант.
Мне захотелось настроить то же самое на гипервизоре Proxmox, где Docker ставить на хост - плохая идея. Каких-то реальных проблем может и не будет, но я обычно ничего не устанавливаю на гипервизоры. Сделал по-другому. Взял LXC контейнер, установил туда Docker (так можно). Дальше очень долго возился с тем, чтобы пробросить информацию о дисках в LXC контейнер. Это оказалась непростая задача. Сами диски вроде бы прокинул, он были видны в LXC контейнере, но smartctl так и не смог с них забрать информацию.
Хотел уже забросить эту идею, пока внимательнее не изучил репозиторий Scrutiny. У него есть API и есть сборщик метрик, который можно запустить где угодно и просто отправить метрики в веб интерфейс. Сборщик работает и в Windows.
В итоге сделал так. В указанном LXC контейнере запустил веб интерфейс:
Можно идти по IP адресу сервера на порт 8080. По умолчанию нет аутентификации. Сразу всё доступно. Служба запустится с конфигурацией по умолчанию. Для того, чтобы её настроить, нужно положить файл
На сам гипервизор скачал бинарник - сборщик данных. Он лежит в репозитории:
Отправляю метрики в веб интерфейс:
Они сразу же отображаются там. Команду выше нужно будет поставить в планировщик (cron или systemd.timer). Часто собирать данные не обязательно, если вам не нужен подробный график температуры. Достаточно отправлять их раз в час. У сборщика есть свой конфигурационный файл, в котором можно настроить некоторые дополнительные параметры, исключить ненужные диски и т.д. Пример collector.yaml.
Мне понравилась программа. Простая, удобная, для выполнения одной задачи. Ждал от неё возможность объединить в едином интерфейсе информацию с разных серверов, но не увидел там такого. Единственный вариант - для каждого сервера запускать веб интерфейс на отдельном порту и менять этот порт в сборщике в зависимости от сервера. Но это уже так себе решение по удобству.
⇨4️⃣ Исходники Scrutiny
Я лично использую Zabbix для мониторинга за SMART. Настраиваю примерно так, как в статье:
⇨ Настройка мониторинга SMART жесткого диска в zabbix
Она устарела, поменялись и скрипты, и шаблоны, так как с новыми версиями Zabbix уже не работают некоторые вещи из статьи. Недавно настраивал с нуля и повозился немного. Надо бы статью обновить, но пока руки не доходят. Сам принцип остался тот же - smartmontools на хостах, скрипты для автоопределения дисков и шаблон Zabbix для парсинга вывода smartctl.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#железо #мониторинг
Scrutiny можно установить вручную из отдельных компонентов, но проще, конечно, запустить в Docker контейнере. Инструкция из репозитория предлагает сделать это так:
# docker run -it --rm -p 8080:8080 -p 8086:8086 \
-v `pwd`/scrutiny:/opt/scrutiny/config \
-v `pwd`/influxdb2:/opt/scrutiny/influxdb \
-v /run/udev:/run/udev:ro \
--cap-add SYS_RAWIO \
--device=/dev/sda \
--device=/dev/sdb \
--name scrutiny \
ghcr.io/analogj/scrutiny:master-omnibus
То есть мы пробрасываем диски внутрь контейнера и добавляем необходимые права, чтобы можно было увидеть SMART. Если у вас контейнеры крутятся прямо на железе, то это самый простой и быстрый вариант.
Мне захотелось настроить то же самое на гипервизоре Proxmox, где Docker ставить на хост - плохая идея. Каких-то реальных проблем может и не будет, но я обычно ничего не устанавливаю на гипервизоры. Сделал по-другому. Взял LXC контейнер, установил туда Docker (так можно). Дальше очень долго возился с тем, чтобы пробросить информацию о дисках в LXC контейнер. Это оказалась непростая задача. Сами диски вроде бы прокинул, он были видны в LXC контейнере, но smartctl так и не смог с них забрать информацию.
Хотел уже забросить эту идею, пока внимательнее не изучил репозиторий Scrutiny. У него есть API и есть сборщик метрик, который можно запустить где угодно и просто отправить метрики в веб интерфейс. Сборщик работает и в Windows.
В итоге сделал так. В указанном LXC контейнере запустил веб интерфейс:
# docker run -it --rm -p 8080:8080 -p 8086:8086 \
-v `pwd`/scrutiny:/opt/scrutiny/config \
-v `pwd`/influxdb2:/opt/scrutiny/influxdb \
--name scrutiny \
ghcr.io/analogj/scrutiny:master-omnibus
Можно идти по IP адресу сервера на порт 8080. По умолчанию нет аутентификации. Сразу всё доступно. Служба запустится с конфигурацией по умолчанию. Для того, чтобы её настроить, нужно положить файл
scrutiny.yaml
в директорию /scrutiny
. Пример конфигурации. В ней же настраиваются уведомления. Поддерживается telegram, discord, smtp, gotify и много других каналов.На сам гипервизор скачал бинарник - сборщик данных. Он лежит в репозитории:
# wget https://github.com/AnalogJ/scrutiny/releases/download/v0.8.1/scrutiny-collector-metrics-linux-amd64
# mv scrutiny-collector-metrics-linux-amd64 scrutiny-collector-metrics
Отправляю метрики в веб интерфейс:
# ./scrutiny-collector-metrics run --api-endpoint "https://10.20.1.64:8080"
Они сразу же отображаются там. Команду выше нужно будет поставить в планировщик (cron или systemd.timer). Часто собирать данные не обязательно, если вам не нужен подробный график температуры. Достаточно отправлять их раз в час. У сборщика есть свой конфигурационный файл, в котором можно настроить некоторые дополнительные параметры, исключить ненужные диски и т.д. Пример collector.yaml.
Мне понравилась программа. Простая, удобная, для выполнения одной задачи. Ждал от неё возможность объединить в едином интерфейсе информацию с разных серверов, но не увидел там такого. Единственный вариант - для каждого сервера запускать веб интерфейс на отдельном порту и менять этот порт в сборщике в зависимости от сервера. Но это уже так себе решение по удобству.
⇨
Я лично использую Zabbix для мониторинга за SMART. Настраиваю примерно так, как в статье:
⇨ Настройка мониторинга SMART жесткого диска в zabbix
Она устарела, поменялись и скрипты, и шаблоны, так как с новыми версиями Zabbix уже не работают некоторые вещи из статьи. Недавно настраивал с нуля и повозился немного. Надо бы статью обновить, но пока руки не доходят. Сам принцип остался тот же - smartmontools на хостах, скрипты для автоопределения дисков и шаблон Zabbix для парсинга вывода smartctl.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#железо #мониторинг
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117👎6
Пробую в ежедневной рутине использовать в качестве помощника ИИ. В данном случае я имею ввиду Openchat-3.5-0106, которым пользуюсь. Как я уже отмечал ранее, там, где нужно выдать какую-то справочную информацию или скомбинировать известную информацию, он способен помочь. А где надо немного подумать и что-то написать новое, то уже не очень.
У меня возникла простая задача. В запросах к API на выборку данных нужно указывать год, номер месяца, дни месяца. Это нетрудно сделать с помощью bash. Решил сразу задать вопрос боту и посмотреть результат. Сформулировал запрос так:
Напиши bash скрипт, который будет показывать текущую дату, номер текущего месяца, текущий год, первый и последний день текущего месяца, прошлого месяца и будущего месяца.
Получил на выходе частично работающий скрипт. Текущий год, месяц и дату показывает, первые дни нет. Вот скрипт, который предложил ИИ.
Гугл первой же ссылкой дал правильный ответ на stackexchange. Идею я понял, немного переделал скрипт под свои потребности. То есть сделал сразу себе мини-шпаргалку, заготовку. Получилось вот так:
Можете себе забрать, если есть нужда работать с датами. Иногда это нужно для работы с бэкапами, которые по маске с датой создаются. Директории удобно по месяцам и годам делать. Потом оттуда удобно забирать данные или чистить старое. То же самое с API. К ним часто нужно указывать интервал запроса. Года, месяцы, даты чаще всего отдельными переменными идут.
Проверять подобные скрипты удобно с помощью faketime:
Я в своей деятельности пока не вижу какой-то значимой пользы от использования ИИ. Не было так, что вот задал ему вопрос и получил готовый ответ.
#bash #script
У меня возникла простая задача. В запросах к API на выборку данных нужно указывать год, номер месяца, дни месяца. Это нетрудно сделать с помощью bash. Решил сразу задать вопрос боту и посмотреть результат. Сформулировал запрос так:
Напиши bash скрипт, который будет показывать текущую дату, номер текущего месяца, текущий год, первый и последний день текущего месяца, прошлого месяца и будущего месяца.
Получил на выходе частично работающий скрипт. Текущий год, месяц и дату показывает, первые дни нет. Вот скрипт, который предложил ИИ.
Гугл первой же ссылкой дал правильный ответ на stackexchange. Идею я понял, немного переделал скрипт под свои потребности. То есть сделал сразу себе мини-шпаргалку, заготовку. Получилось вот так:
#!/bin/bash
CUR_DATE=$(date "+%F")
CUR_YEAR=$(date "+%Y")
CUR_MONTH=$(date "+%m")
DAY_CUR_START_FULL=$(date +%Y-%m-01)
DAY_CUR_START=$(date "+%d" -d $(date +'%Y-%m-01'))
DAY_CUR_END_FULL=$(date -d "`date +%Y%m01` +1 month -1 day" +%Y-%m-%d)
DAY_CUR_END=$(date "+%d" -d "$DAY_CUR_START_FULL +1 month -1 day")
LAST_MONTH_DATE=$(date "+%F" -d "$(date +'%Y-%m-01') -1 month")
LAST_MONTH_YEAR=$(date "+%Y" -d "$(date +'%Y-%m-01') -1 month")
LAST_MONTH=$(date "+%m" -d "$(date +'%Y-%m-01') -1 month")
DAY_LAST_START=$(date "+%d" -d "$(date +'%Y-%m-01') -1 month")
DAY_LAST_START_FULL=$(date "+%Y-%m-01" -d "$(date +'%Y-%m-01') -1 month")
DAY_LAST_END=$(date "+%d" -d "$LAST_MONTH_DATE +1 month -1 day")
DAY_LAST_END_FULL=$(date -d "$LAST_MONTH_DATE +1 month -1 day" +%Y-%m-%d)
echo -e "\n"
echo "Полная текущая дата: $CUR_DATE"
echo "Текущий год: $CUR_YEAR"
echo "Номер текущего месяца: $CUR_MONTH"
echo "Первый день этого месяца: $DAY_CUR_START_FULL, $DAY_CUR_START"
echo "Последний день этого месяца: $DAY_CUR_END_FULL, $DAY_CUR_END"
echo -e "\n"
echo "Начало прошлого месяца: $LAST_MONTH_DATE"
echo "Год прошлого месяца: $LAST_MONTH_YEAR"
echo "Номер прошлого месяца: $LAST_MONTH"
echo "Первый день прошлого месяца: $DAY_LAST_START_FULL, $DAY_LAST_START"
echo "Последний день прошлого месяца: $DAY_LAST_END_FULL, $DAY_LAST_END"
echo -e "\n"
Можете себе забрать, если есть нужда работать с датами. Иногда это нужно для работы с бэкапами, которые по маске с датой создаются. Директории удобно по месяцам и годам делать. Потом оттуда удобно забирать данные или чистить старое. То же самое с API. К ним часто нужно указывать интервал запроса. Года, месяцы, даты чаще всего отдельными переменными идут.
Проверять подобные скрипты удобно с помощью faketime:
# apt install faketime
# faketime '2024-01-05' bash date.sh
Я в своей деятельности пока не вижу какой-то значимой пользы от использования ИИ. Не было так, что вот задал ему вопрос и получил готовый ответ.
#bash #script
4👍85👎8
Решил провести небольшой эксперимент и поддержать авторов, которые ведут блоги по IT тематике. Думаю, среди читателей моего канала такие найдутся. В конечном счёте цель написания статей в публичном доступе - их прочтение другими людьми. Я хочу попробовать помочь в достижении этой цели.
Моя идея в следующем.
1️⃣ Я делаю каталог авторских IT сайтов. Закрепляю его в отдельном сообщении в этом канале. По мере накопления желающих в нём находиться, обновляю.
2️⃣ Создаю отдельный чат только для авторов блогов, куда они будут присылать ссылки и небольшие анонсы своих новых материалов, где я смогу с ними знакомиться.
3️⃣ По мере накопления новых статей я буду делать публикацию на канале с ними и краткими своими комментариями после моего знакомства с материалом по примеру того, как я это делаю с видеороликами.
4️⃣ Авторы сайтов размещают на своих ресурсах простые формы для донатов, чтобы каждый читающий смог закинуть туда денег.
5️⃣ Читатели моего канала знакомятся со статьями и донатят авторам, если считают, что их материалы достойны этого. Если идея реализуется, каталог с сайтами соберётся, а статьи будут регулярно выходить, то я выделю от себя лично небольшой бюджет и буду регулярно донатить.
Мне неоднократно говорили в комментариях, что надо пробовать монетизировать контент через донаты. Давайте проверим на базе моего канала, насколько это реально и могут ли авторы с этого что-то зарабатывать. Если не на жизнь, то хотя бы для мотивации.
Мне лично от этого мероприятия ничего не нужно. Я сам готов поддерживать тех, кто пишет текстовые материалы по IT теме. Основная моя поддержка - аудитория, которой это интересно.
Если у кого-то есть идеи по развитию данной темы, предлагайте. Если тут есть авторы сайтов, оставляйте на них ссылки в комментариях. Я потом всё посмотрю и приглашу всех авторов в отдельный канал. Думаю, что и чат организую только для авторов, чтобы там можно было общаться и обсуждать какие-то чисто авторские темы, связанные с сайтами.
#статьи
Моя идея в следующем.
Мне неоднократно говорили в комментариях, что надо пробовать монетизировать контент через донаты. Давайте проверим на базе моего канала, насколько это реально и могут ли авторы с этого что-то зарабатывать. Если не на жизнь, то хотя бы для мотивации.
Мне лично от этого мероприятия ничего не нужно. Я сам готов поддерживать тех, кто пишет текстовые материалы по IT теме. Основная моя поддержка - аудитория, которой это интересно.
Если у кого-то есть идеи по развитию данной темы, предлагайте. Если тут есть авторы сайтов, оставляйте на них ссылки в комментариях. Я потом всё посмотрю и приглашу всех авторов в отдельный канал. Думаю, что и чат организую только для авторов, чтобы там можно было общаться и обсуждать какие-то чисто авторские темы, связанные с сайтами.
#статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
45👍186👎10
Писал уже не раз про контрольные точки на виртуальных машинах, но возвращаюсь снова, так как лично столкнулся с небольшой проблемой на днях. Есть гипервизоры Hyper-V и есть Veeam Backup & Replication. Иногда, прямо совсем редко, случается так, что он почему-то не удаляет за собой контрольные точки после создания бэкапа.
Я лет за 10 пару раз такое у себя видел. В этот раз они остались у нескольких виртуалок. Заметил случайно. Но в целом это не уникальная ситуация. К прошлой подобной заметке люди написали много комментариев с описанием проблем, которые они словили из-за оставшихся снепшотов. Вот комментарий от одного человека к подобной заметке в прошлом:
Работал в ТП Veeam, на обучении, запомнил фразу: снапшоты - зло, особенно в руках, которые не понимают, зачем они нужны; но при этом совсем отключать их нельзя, бэкапы работать не будут. А потом на кейсах чего я только не видел - сотни снапшотов на каждой виртуалке на всем парке виртуальных машин, снапшоты с дельтой в терабайт, снапшоты, которым буквально по 10 лет (самое забавное, что дельта в этом случае была не особо большой, особенно относительно вышеописанной терабайтной, и мерджинг прошел буквально за час). Снапшот "здорового" человека - это описываемый в посте способ быстро откатить изменения при обновлении неповоротливого софта, зачем их вручную использовать в других случаях - не понимаю.
Подобные ошибки бывают у разного софта. Видел лично на разных гипервизорах. Из недавнего заметил во время теста Vinchin, что он тоже с определёнными настройками оставлял после работы неудалённые снепшоты. В определённых ситуациях это может привести к сбою в работе виртуалки или всего гипервизора. Особенно если виртуалка очень большая по диску и накопилась большая дельта изменений. Может тупо не хватить места или производительности дисков для слияния. И всё встанет колом.
По хорошему тут надо настраивать мониторинг. Я не делал никогда, потому что у меня нет таких виртуалок, где прям реально будут проблемы, если снепшоты останутся. Плюс, лично сталкивался очень редко. Большой нужды так то и нет. Но если у вас другая ситуация, то настраивайте. Готовых решений по этой теме я не видел, так что скорее всего придётся костылись на скриптах под свою систему мониторинга и виртуализации.
И дам ещё одну подсказку по теме Hyper-V, если с ними работаете. Все работы с гипервизором лучше выполнять через его Windows Admin Center или консоль. И сам не раз сталкивался, и в комментариях к своим статьям видел, что люди жалуются на странные ошибки при работе в оснастке. А те же самые действия в WAC выполняются нормально. Если что-то не работает в оснастке, сразу пробуйте в WAC. Скорее всего там всё нормально получится. Например, я не мог удалить снепшоты через оснастку. А через WAC без проблем зашёл и удалил. Не знаю, с чем это связано.
#виртуализация
Я лет за 10 пару раз такое у себя видел. В этот раз они остались у нескольких виртуалок. Заметил случайно. Но в целом это не уникальная ситуация. К прошлой подобной заметке люди написали много комментариев с описанием проблем, которые они словили из-за оставшихся снепшотов. Вот комментарий от одного человека к подобной заметке в прошлом:
Работал в ТП Veeam, на обучении, запомнил фразу: снапшоты - зло, особенно в руках, которые не понимают, зачем они нужны; но при этом совсем отключать их нельзя, бэкапы работать не будут. А потом на кейсах чего я только не видел - сотни снапшотов на каждой виртуалке на всем парке виртуальных машин, снапшоты с дельтой в терабайт, снапшоты, которым буквально по 10 лет (самое забавное, что дельта в этом случае была не особо большой, особенно относительно вышеописанной терабайтной, и мерджинг прошел буквально за час). Снапшот "здорового" человека - это описываемый в посте способ быстро откатить изменения при обновлении неповоротливого софта, зачем их вручную использовать в других случаях - не понимаю.
Подобные ошибки бывают у разного софта. Видел лично на разных гипервизорах. Из недавнего заметил во время теста Vinchin, что он тоже с определёнными настройками оставлял после работы неудалённые снепшоты. В определённых ситуациях это может привести к сбою в работе виртуалки или всего гипервизора. Особенно если виртуалка очень большая по диску и накопилась большая дельта изменений. Может тупо не хватить места или производительности дисков для слияния. И всё встанет колом.
По хорошему тут надо настраивать мониторинг. Я не делал никогда, потому что у меня нет таких виртуалок, где прям реально будут проблемы, если снепшоты останутся. Плюс, лично сталкивался очень редко. Большой нужды так то и нет. Но если у вас другая ситуация, то настраивайте. Готовых решений по этой теме я не видел, так что скорее всего придётся костылись на скриптах под свою систему мониторинга и виртуализации.
И дам ещё одну подсказку по теме Hyper-V, если с ними работаете. Все работы с гипервизором лучше выполнять через его Windows Admin Center или консоль. И сам не раз сталкивался, и в комментариях к своим статьям видел, что люди жалуются на странные ошибки при работе в оснастке. А те же самые действия в WAC выполняются нормально. Если что-то не работает в оснастке, сразу пробуйте в WAC. Скорее всего там всё нормально получится. Например, я не мог удалить снепшоты через оснастку. А через WAC без проблем зашёл и удалил. Не знаю, с чем это связано.
#виртуализация
👍75👎3
Уже довольно давно существует веб сервер Caddy. Он особо не на слуху в плане использования в качестве одиночного веб сервера. Но лично я его часто вижу в составе каких-то программных комплексов, собранных из различных open source проектов.
В простых случаях Caddy может очень серьёзно упростить задачу по веб доступу к чему-либо или проксированию запросов на внутренний веб ресурс. Покажу сразу на примерах, чтобы вы оценили, взяли на вооружение и использовали по мере необходимости.
Устанавливаем Caddy на сервер с Debian:
Это если вы хотите, чтобы у вас всё было как обычно - обновление из репозитория, конфигурационный файл, systemd служба и т.д. Сам по себе Caddy - это одиночный бинарный файл. Его можно просто скачать и установить на любой Linux сервер:
Windows, он, кстати, тоже поддерживает. Это может быть хорошим решением для проксирования веб публикации баз 1С в Windows с помощью Apache. Принимаем все запросы в Caddy, передаём в Apache.
По умолчанию Caddy работает сразу по протоколу HTTPS. Если для доменного имени настроена DNS запись, то он автоматом при запуске получает сертификат от let's encrypt и использует. Достаточно нарисовать вот такой простой конфиг
После перезапуска Caddy автоматически получит сертификаты для домена example.com и запустит статический сайт на HTTPS.
Пример конфигурации для проксирования:
Тут всё то же самое. Caddy автоматом получит сертификат, запустится с использованием HTTPS и будет работать в качестве reverse proxy для указанного адреса.
Всё то же самое можно запустить сразу в консоли, если вам это нужно для каких-то разовых задач:
В консольном режиме Caddy удобно использовать даже для разового получения сертификатов. Запустил по примеру выше и получил на выходе сертификаты в директории
Пример для php сайта, типа Worpdress:
Простой и функциональный веб сервер. У него нормальная документация, где все возможности описаны. Я показал примеры для консольного режима и обычного конфигурационного файла. Дополнительно он поддерживает конфигурацию в формате JSON, которую помимо текстового файла, можно передавать напрямую через API. В документации есть примеры.
Если вы не хотите или вам не нужно разбираться в конфигурация Nginx или Apache, а надо, чтобы просто работало, то Caddy - отличный вариант типового веб сервера для общих прикладных задач. При этом он обладает дополнительными возможностями, актуальными для современной эксплуатации:
◽️логи в формате json;
◽️экспорт метрик в формате prometheus;
◽️обновление и перезагрузка конфигурации на лету через API;
◽️снятие профилей для профилировщика pprof.
Он в настройках по умолчанию простой, но при желании можно много всего добавить.
⇨ 🌐 Сайт / Исходники (58.5k⭐️ 😱)
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver
В простых случаях Caddy может очень серьёзно упростить задачу по веб доступу к чему-либо или проксированию запросов на внутренний веб ресурс. Покажу сразу на примерах, чтобы вы оценили, взяли на вооружение и использовали по мере необходимости.
Устанавливаем Caddy на сервер с Debian:
# apt install debian-keyring debian-archive-keyring apt-transport-https curl
# curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install caddy
Это если вы хотите, чтобы у вас всё было как обычно - обновление из репозитория, конфигурационный файл, systemd служба и т.д. Сам по себе Caddy - это одиночный бинарный файл. Его можно просто скачать и установить на любой Linux сервер:
# curl -sS https://webi.sh/caddy | sh
Windows, он, кстати, тоже поддерживает. Это может быть хорошим решением для проксирования веб публикации баз 1С в Windows с помощью Apache. Принимаем все запросы в Caddy, передаём в Apache.
По умолчанию Caddy работает сразу по протоколу HTTPS. Если для доменного имени настроена DNS запись, то он автоматом при запуске получает сертификат от let's encrypt и использует. Достаточно нарисовать вот такой простой конфиг
/etc/caddy/Caddyfile
:example.com {
root * /var/www
file_server
}
# systemctl restart caddy
После перезапуска Caddy автоматически получит сертификаты для домена example.com и запустит статический сайт на HTTPS.
Пример конфигурации для проксирования:
example.com {
reverse_proxy 10.20.1.50:5000
}
Тут всё то же самое. Caddy автоматом получит сертификат, запустится с использованием HTTPS и будет работать в качестве reverse proxy для указанного адреса.
Всё то же самое можно запустить сразу в консоли, если вам это нужно для каких-то разовых задач:
# caddy file-server --domain example.com --root /var/www
# caddy reverse-proxy --from example.com --to 10.20.1.50:5000
В консольном режиме Caddy удобно использовать даже для разового получения сертификатов. Запустил по примеру выше и получил на выходе сертификаты в директории
~/.local/share/caddy/certificates/
. Если используется служба, то она по умолчанию хранит сертификаты в /var/lib/caddy/.local/share/caddy/certificates/
. Пример для php сайта, типа Worpdress:
example.com {
root * /var/www
file_server {
index index.php
}
php_fastcgi unix//run/php/php8.2-fpm.sock
}
Простой и функциональный веб сервер. У него нормальная документация, где все возможности описаны. Я показал примеры для консольного режима и обычного конфигурационного файла. Дополнительно он поддерживает конфигурацию в формате JSON, которую помимо текстового файла, можно передавать напрямую через API. В документации есть примеры.
Если вы не хотите или вам не нужно разбираться в конфигурация Nginx или Apache, а надо, чтобы просто работало, то Caddy - отличный вариант типового веб сервера для общих прикладных задач. При этом он обладает дополнительными возможностями, актуальными для современной эксплуатации:
◽️логи в формате json;
◽️экспорт метрик в формате prometheus;
◽️обновление и перезагрузка конфигурации на лету через API;
◽️снятие профилей для профилировщика pprof.
Он в настройках по умолчанию простой, но при желании можно много всего добавить.
⇨ 🌐 Сайт / Исходники (58.5k⭐️ 😱)
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver
3👍163👎5
Где вы оставляете следы, когда подключаетесь по SSH к серверу на базе Linux? Собрал краткую подборку основных ваших артефактов в Debian. Будет актуальна во всех дистрибутивах на её основе. Для других могут отличаться только частности в виде имён и путей к логам, но общий смысл будет тот же.
На всякий случай сразу предупреждаю, что если логи отправляются во внешнее хранилище, то вы там наследили сразу в момент подключения. Поэтому важно иметь своё внешнее по отношению ко всем серверам хранилище системных логов.
1️⃣ Подключение по SSH фиксируется в
Лога может не быть, либо логи могут параллельно храниться в journald. Смотреть так:
2️⃣ Информация о подключении будет записана в бинарный лог
3️⃣ Информация о последнем логине пользователя хранится в бинарном файле
4️⃣ Пока вы не отключились, информация о вашей активной сессии вместе с остальными сессиями хранится в бинарном файле
5️⃣ Если во время подключения были неудачные попытки с неправильным логином и паролем, то эта информация будет сохранена в бинарном файле
6️⃣ Если что-то делали в консоли, то информация об этом сохранится в текстовом файле
В рамках сессии история будет сохраняться и отображаться по команде
Для скрытия информации о подключении можно банально обнулить указанные выше логи и бинарные файлы. О вас не останется информации, но станет понятно, что кто-то подключался. Я, кстати, с подобным сталкивался. Когда только устроился в одну компанию. Через несколько дней после начала работы, когда стал проверять все серваки и разбираться в инфраструктуре, заметил на одном из серверов очищенную историю и прочие следы. Остаётся только гадать, что там делал бывший админ.
Просто взять и удалить информацию о себе из бинарных файлов не очень просто. Как один из вариантов - взять готовый скрипт, который на основе IP адреса вычистит информацию в том числе из бинарных логов. У меня на Debian 12 он не завёлся. Всё время ругался на UTMP block size. Мучал уже родной ChatGPT с chatgpt.com на эту тему, не смог помочь. Много всего предложил, но ничего не помогло. В конце предложил по-другому очистить файл: удалить и заново создать. Забил.
Для того, чтобы от подобных очисток защититься, достаточно на любом Linux сервере запустить syslog сервер или systemd-journal-remote. И вы всегда будете знать, кто и когда к вам подключается. Для логов службы sshd не нужно ни много ресурсов, ни места на диске. Нет нужды разворачивать какое-то специальное хранилище для логов, если у вас в нём нет нужды. Я отдельно для syslog сервера поднимал виртуалку 1CPU/512M/10G.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#terminal #security
На всякий случай сразу предупреждаю, что если логи отправляются во внешнее хранилище, то вы там наследили сразу в момент подключения. Поэтому важно иметь своё внешнее по отношению ко всем серверам хранилище системных логов.
1️⃣ Подключение по SSH фиксируется в
/var/log/auth.log
. С ним всё просто - это текстовый лог. Сразу посмотреть удачные подключения можно так:# grep 'Accepted' /var/log/auth.log
Лога может не быть, либо логи могут параллельно храниться в journald. Смотреть так:
# journalctl -u ssh -r
2️⃣ Информация о подключении будет записана в бинарный лог
/var/log/wtmp
. Смотреть в консоли командой last
. Увидите информацию о дате логина, пользователе, его IP адресе. Там же дополнительно хранится информация о загрузках и выключениях сервера, в том числе кем они были инициированы. Могу сразу для расширенной информации посоветовать ключи: last -Faiwx
.3️⃣ Информация о последнем логине пользователя хранится в бинарном файле
/var/log/lastlog
. Смотреть одноимённой консольной командой lastlog
. Увидите список всех системных пользователей и дату их последнего подключения вместе с IP адресом.4️⃣ Пока вы не отключились, информация о вашей активной сессии вместе с остальными сессиями хранится в бинарном файле
/var/run/utmp
. Смотреть информацию оттуда можно командой who
.5️⃣ Если во время подключения были неудачные попытки с неправильным логином и паролем, то эта информация будет сохранена в бинарном файле
/var/log/btmp
. Смотреть командой lastb
.6️⃣ Если что-то делали в консоли, то информация об этом сохранится в текстовом файле
~/.bash_history
. Если не хотите, чтобы это происходило, после логина измените место хранения истории через переопределение переменной. Выполните в консоли:# export HISTFILE=/dev/null
В рамках сессии история будет сохраняться и отображаться по команде
history
, но в файл записана не будет.Для скрытия информации о подключении можно банально обнулить указанные выше логи и бинарные файлы. О вас не останется информации, но станет понятно, что кто-то подключался. Я, кстати, с подобным сталкивался. Когда только устроился в одну компанию. Через несколько дней после начала работы, когда стал проверять все серваки и разбираться в инфраструктуре, заметил на одном из серверов очищенную историю и прочие следы. Остаётся только гадать, что там делал бывший админ.
Просто взять и удалить информацию о себе из бинарных файлов не очень просто. Как один из вариантов - взять готовый скрипт, который на основе IP адреса вычистит информацию в том числе из бинарных логов. У меня на Debian 12 он не завёлся. Всё время ругался на UTMP block size. Мучал уже родной ChatGPT с chatgpt.com на эту тему, не смог помочь. Много всего предложил, но ничего не помогло. В конце предложил по-другому очистить файл: удалить и заново создать. Забил.
Для того, чтобы от подобных очисток защититься, достаточно на любом Linux сервере запустить syslog сервер или systemd-journal-remote. И вы всегда будете знать, кто и когда к вам подключается. Для логов службы sshd не нужно ни много ресурсов, ни места на диске. Нет нужды разворачивать какое-то специальное хранилище для логов, если у вас в нём нет нужды. Я отдельно для syslog сервера поднимал виртуалку 1CPU/512M/10G.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#terminal #security
526👍290👎2
This media is not supported in your browser
VIEW IN TELEGRAM
Забавная и очень знакомая ситуация. Я часто работал из дома. Иногда жаба душит платить за аренду места в коворкинге. Начинаешь мыкаться по разным местам. Если работы немного и успеешь всё сделать, пока дети из школы не пришли, можно остаться дома. Иногда на дачу уезжал, иногда к родителям, если они у себя на даче и квартира свободна, иногда в кафе, в офисе, либо где-то ещё. Одно время регулярно ходил в центр "Мои документы", где были удобные индивидуальные кабинки с розеткой. Можно было спокойно сидеть и работать весь день.
Последнее время утомила эта суета, особенно с рождением 4-го ребёнка. Стал постоянно арендовать место в коворкинге и ездить туда по стандартному расписанию среднестатистического офиса: с 10 до 19. На самом деле так проще работать. Лично мне рваный график для работы не нравится с точки зрения продуктивности. Иногда работаю по нему вынужденно из-за множества личных дел. На долгосрочном периоде привыкаешь к режиму дня и нарушать его не хочется. Падает продуктивность.
А у вас как с этим? Где удобнее всего работать удалённо? Думаю, что большинство напишет дома в отдельной комнате. Но я лично всегда предпочту рабочее помещение вне дома. Летом у меня отдельная комната на втором этаже, но это всё равно не то. Дома нерабочая атмосфера. Вообще никто не работает, только я. Все на расслабоне отдыхают и наслаждаются летом.
Видео отсюда:
▶️ https://www.youtube.com/watch?v=oYrx0V1jNq0
Понравились на канале некоторые ролики.
#юмор #разное
Последнее время утомила эта суета, особенно с рождением 4-го ребёнка. Стал постоянно арендовать место в коворкинге и ездить туда по стандартному расписанию среднестатистического офиса: с 10 до 19. На самом деле так проще работать. Лично мне рваный график для работы не нравится с точки зрения продуктивности. Иногда работаю по нему вынужденно из-за множества личных дел. На долгосрочном периоде привыкаешь к режиму дня и нарушать его не хочется. Падает продуктивность.
А у вас как с этим? Где удобнее всего работать удалённо? Думаю, что большинство напишет дома в отдельной комнате. Но я лично всегда предпочту рабочее помещение вне дома. Летом у меня отдельная комната на втором этаже, но это всё равно не то. Дома нерабочая атмосфера. Вообще никто не работает, только я. Все на расслабоне отдыхают и наслаждаются летом.
Видео отсюда:
Понравились на канале некоторые ролики.
#юмор #разное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117👎8
Media is too big
VIEW IN TELEGRAM
⇨ Опытный сисадмин захотел в DevOps? / Техсобес на позицию Junior DevOps Engineer / Mock interview
Прослушал целиком без перемотки от и до. Реально понравилось. Необычный контент. Я раньше такой не смотрел. Максимально приближённое к реальности подробное собеседование сисадмина на позицию DevOps Junior.
Если вы опытный сисадмин, то ничего нового не узнаете, но потешите своё самолюбие. Я знал ответы практически на все вопросы. Так или иначе мог обсудить все поднятые темы, кроме одного: отличие Docker от Podman. Просто не интересовался этим вопросом вообще. Все остальные либо хорошо, либо частично знал.
В конце ведущие высоко оценили навыки кандидата с точки зрения системного администрирования. Определили его как уверенный middle сисадмин, который подходит на позицию junior devops. Хотя мне показалось, что он многое очень поверхностно отвечал по теме администрирования.
Если вы сами в поисках работы, либо планируете её менять, то вам точно это будет интересно. Даже если оценка ведущих и не в рынке, но тут я судить не могу, так как наймом не занимаюсь и сам по собеседованиям не хожу, то получите хотя бы представление о техническом интервью. Как оно может проходить и какие вопросы будут задавать. Когда я занимался наймом, то примерно в таком же ключе вёл собеседования. Придумывал гипотетические ситуации и спрашивал выборочно про какие-то технологии, продукты.
- про DNS и MX запись
- про ping и проверку доступности хоста в локальной сети
- как проверять доступность хостов, которые не в локальной сети
- про обеспечение доступа извне в локальную сеть по ssh
- про защиту марщрутизатора от внешнего взлома и DoS
- про проброс RDP в локальную сеть
- про DMZ
- про проброс RDP через ssh-туннели
- про Docker и Podman
- что такое контейнереризация
- стоит ли запускать высоконагруженное приложение в контейнере?
- про мониторинг и алертинг
- как защитить компанию от фишинга
- про GNU/Linux
- как запустить на Linux программу, полученную в виде исходного кода, демонизировать и потраблшутить
- про работу под пользователем root
- про инфраструктуру как код (IaC)
- уточнение про флаг setuid
- про CI/CD/CD пайплайны
#обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍132👎3
Недавно была заметка про знание СУБД. Видел комментарии, мол пусть DBA разбираются в нюансах СУБД, а админам это ни к чему. Расскажу про один случай, который со мной на днях случился. Сразу скажу, что это не будет рекомендацией к действиям, так как сам я ситуацию хоть и разрешил, но не лучшим образом. Плюс, понервничал немного.
Приходит уведомление в мониторинг, что дамп базы выполнен с ошибкой. База MySQL, размер дампа ~10ГБ. Так как размер позволяет, я бэкаплю её дампом несколько раз в день. Он проходит быстро, проблем не вызывает. Как настроен мониторинг, рассказывал отдельно.
Смотрю ошибку в логе дампа:
В таблицу постоянно что-то пишется. Движок сайта по кронам сам её чистит. Судя по всему, что-то пошло не так. Сделал дамп без этой таблицы, добавив ключ
Первым делом хотел поднять копию виртуалки и попробовать разобраться там. Но, к сожалению, виртуалка очень большая. Восстанавливаться будет долго. Захотелось решить проблему здесь и сейчас, потому что было время и возможность. На первый взгляд она не особо критичная и грозит только потерей таблицы в худшем случае. Забегая вперёд скажу, что этот худший случай и произошёл.
Захожу в консоль mysql и смотрю:
Ничего хорошего. Пробую починить автоматически:
В логе mariadb куча ошибок:
Для надёжности зажмурился и перезапустил службу mariadb. Перезапуск прошёл штатно, база поднялась, но таблица не ожила. Всё те же ошибки. Причём данные в неё, судя по всему, записывались.
Тут я немного приуныл, так как знаний не хватает решить проблему. Не понятна причина. Я узнал, что хранится в таблице и понял, что эти данные не представляют ценности и могут быть потеряны. Дальше поискал инфу в гугле и поговорил с chatgpt. Последний не предложил ничего нового из того, что я видел в гугле, но накидал неактуальных рекомендаций для движка MyISAM, хотя у меня InnoDB.
Нашёл следующие варианты решения проблемы:
1️⃣ Удалить и пересоздать все индексы.
2️⃣ Создать пустую таблицу с аналогичной структурой, скопировать туда данные, исходную удалить, новую таблицу переименовать.
3️⃣ Запустить сервер с активным параметром
4️⃣ Пересобрать таблицу командой:
Судя по отзывам, последняя команда будет выполняться очень долго. Третья может привести к долгому старту службы или ещё каким-то проблемам. Не хотелось запускать их на работающем сервере. Решил пересоздать индексы. Их там всего два, но один PRIMARY. Его нельзя просто взять и удалить. Вычитал на stackoverflow один совет. Зайти через phpmyadmin, убрать чекбокс Auto Increment на столбце с этим индексом, сохранить, потом зайти, вернуть AI. Возможно на живой таблице это и сработало бы, но у меня вылетела ошибка, ничего не сохранилось, таблица вообще умерла.
С этого момента некоторые юзеры начали получать ошибку MySQL Query Error! Дальше не стал экспериментировать, грохнул таблицу и создал заново. Структуру посмотрел в живом дампе. Всё сразу заработало, данные потекли в таблицу, дамп нормально создаётся.
Если у кого-то есть советы по теме, с удовольствием выслушаю. Ещё раз уточню, что стал делать опасные манипуляции, когда понял, что данные позволительно потерять. И я мог себе позволить простой в 10-15 минут.
#mysql
Приходит уведомление в мониторинг, что дамп базы выполнен с ошибкой. База MySQL, размер дампа ~10ГБ. Так как размер позволяет, я бэкаплю её дампом несколько раз в день. Он проходит быстро, проблем не вызывает. Как настроен мониторинг, рассказывал отдельно.
Смотрю ошибку в логе дампа:
mysqldump: Error 1034: Index for table 'b_stat_session_data' is corrupt; try to repair it when dumping table `b_stat_session_data` at row: 329011
В таблицу постоянно что-то пишется. Движок сайта по кронам сам её чистит. Судя по всему, что-то пошло не так. Сделал дамп без этой таблицы, добавив ключ
--ignore-table=dbname.b_stat_session_data
. Потом сразу проверил более старые дампы и бэкап виртуалки. Всё на месте, можно разбираться.Первым делом хотел поднять копию виртуалки и попробовать разобраться там. Но, к сожалению, виртуалка очень большая. Восстанавливаться будет долго. Захотелось решить проблему здесь и сейчас, потому что было время и возможность. На первый взгляд она не особо критичная и грозит только потерей таблицы в худшем случае. Забегая вперёд скажу, что этот худший случай и произошёл.
Захожу в консоль mysql и смотрю:
> CHECK TABLE b_stat_session_data;
Warning | InnoDB: The B-tree of index PRIMARY is corrupted. |
Warning | InnoDB: Index IX_GUEST_MD5 is marked as corrupted |
error | Corrupt
Ничего хорошего. Пробую починить автоматически:
> OPTIMIZE TABLE b_stat_session_data;
note | Table does not support optimize, doing recreate + analyze instead
error | Got error 106 "Transport endpoint is already connected" from storage engine InnoDB
status | Operation failed
В логе mariadb куча ошибок:
[ERROR] mariadbd: Index for table 'b_stat_session_data' is corrupt; try to repair it
Для надёжности зажмурился и перезапустил службу mariadb. Перезапуск прошёл штатно, база поднялась, но таблица не ожила. Всё те же ошибки. Причём данные в неё, судя по всему, записывались.
Тут я немного приуныл, так как знаний не хватает решить проблему. Не понятна причина. Я узнал, что хранится в таблице и понял, что эти данные не представляют ценности и могут быть потеряны. Дальше поискал инфу в гугле и поговорил с chatgpt. Последний не предложил ничего нового из того, что я видел в гугле, но накидал неактуальных рекомендаций для движка MyISAM, хотя у меня InnoDB.
Нашёл следующие варианты решения проблемы:
innodb_force_recovery
. alter table b_stat_session_data engine = innodb
Судя по отзывам, последняя команда будет выполняться очень долго. Третья может привести к долгому старту службы или ещё каким-то проблемам. Не хотелось запускать их на работающем сервере. Решил пересоздать индексы. Их там всего два, но один PRIMARY. Его нельзя просто взять и удалить. Вычитал на stackoverflow один совет. Зайти через phpmyadmin, убрать чекбокс Auto Increment на столбце с этим индексом, сохранить, потом зайти, вернуть AI. Возможно на живой таблице это и сработало бы, но у меня вылетела ошибка, ничего не сохранилось, таблица вообще умерла.
С этого момента некоторые юзеры начали получать ошибку MySQL Query Error! Дальше не стал экспериментировать, грохнул таблицу и создал заново. Структуру посмотрел в живом дампе. Всё сразу заработало, данные потекли в таблицу, дамп нормально создаётся.
Если у кого-то есть советы по теме, с удовольствием выслушаю. Ещё раз уточню, что стал делать опасные манипуляции, когда понял, что данные позволительно потерять. И я мог себе позволить простой в 10-15 минут.
#mysql
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍86👎2
Продолжу начатую недавно тему про заметание следов своей деятельности в системе на базе Linux. Пишу не для того, чтобы вы заметали за собой следы, а чтобы понимали, как от этого защищаться. Сегодня речь пойдёт про управление датами создания и изменения файлов.
В Linux это достаточно просто сделать, если есть соответствующие права. В связи с этим расследование инцидентов без наличия бэкапа зачастую становится невыполнимой задачей. Невозможно наверняка узнать, какие файлы изменял злоумышленник. Если нет бэкапа исходников того же сайта, вычищение деятельности зловреда усложняется кратно, так как нет эталона для сравнения. Даты изменения файлов уже не подходят.
Напомню, что у файла есть несколько меток времени:
▪️Birth (crtime) - время создания айноды файла, то есть самого файла.
▪️Access (atime) - время последнего доступа к файлу.
▪️Modify (mtime) - время последнего изменения содержимого файла.
▪️Change (ctime) - время последнего изменения метаданных файла в файловой системе.
Посмотреть указанные метки можно командой
Поменять значения atime и mtime крайне просто. Можно взять банальную утилиту
То же самое можно сделать напрямую в файловой системе через
В конце для проверки надо обязательно сбросить кэш, иначе изменений не увидите. Важно понимать, что для изменения atime и mtime достаточно обычных прав доступа к файлу. То есть любой червь, который залез через исходники сайта, может у него менять эти параметры. А вот для изменения crtime уже нужны права root, так как надо лезть в файловую систему.
Помимо прочих средств защиты, конкретно в данной ситуации с файлами может помочь аудит доступа с помощью auditd.
◽️rwa - чтение (r), запись (w), изменение атрибута (a)
◽️testfile_rule - название правила аудита
Смотрим список правил:
После изменения файла смотрим записи аудита:
Лог аудита хранится в директории
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux #terminal
В Linux это достаточно просто сделать, если есть соответствующие права. В связи с этим расследование инцидентов без наличия бэкапа зачастую становится невыполнимой задачей. Невозможно наверняка узнать, какие файлы изменял злоумышленник. Если нет бэкапа исходников того же сайта, вычищение деятельности зловреда усложняется кратно, так как нет эталона для сравнения. Даты изменения файлов уже не подходят.
Напомню, что у файла есть несколько меток времени:
▪️Birth (crtime) - время создания айноды файла, то есть самого файла.
▪️Access (atime) - время последнего доступа к файлу.
▪️Modify (mtime) - время последнего изменения содержимого файла.
▪️Change (ctime) - время последнего изменения метаданных файла в файловой системе.
Посмотреть указанные метки можно командой
stat
:# stat testfile
Поменять значения atime и mtime крайне просто. Можно взять банальную утилиту
touch
:# touch -m -a -t 202501010000 testfile
# stat testfile
Access: 2025-01-01 00:00:00.000000000 +0300
Modify: 2025-01-01 00:00:00.000000000 +0300
То же самое можно сделать напрямую в файловой системе через
debugfs
:# debugfs -w -R 'set_inode_field /var/www/testfile crtime 202501010000' /dev/sda1
# debugfs -w -R 'set_inode_field /var/www/testfile atime 202501010000' /dev/sda1
# debugfs -w -R 'set_inode_field /var/www/testfile mtime 202501010000' /dev/sda1
# debugfs -w -R 'set_inode_field /var/www/testfile ctime 202501010000' /dev/sda1
# echo 2 > /proc/sys/vm/drop_caches
# stat /var/www/testfile
Access: 2025-01-01 03:00:00.881765992 +0300
Modify: 2025-01-01 03:00:00.881765992 +0300
Change: 2025-01-01 03:00:00.881765992 +0300
Birth: 2025-01-01 03:00:00.881765992 +0300
В конце для проверки надо обязательно сбросить кэш, иначе изменений не увидите. Важно понимать, что для изменения atime и mtime достаточно обычных прав доступа к файлу. То есть любой червь, который залез через исходники сайта, может у него менять эти параметры. А вот для изменения crtime уже нужны права root, так как надо лезть в файловую систему.
Помимо прочих средств защиты, конкретно в данной ситуации с файлами может помочь аудит доступа с помощью auditd.
# apt install auditd
# auditctl -w /var/www/testfile -p rwa -k testfile_rule
◽️rwa - чтение (r), запись (w), изменение атрибута (a)
◽️testfile_rule - название правила аудита
Смотрим список правил:
# auditctl -l
-w /var/www/testfile -p rwa -k testfile_rule
После изменения файла смотрим записи аудита:
# aureport -f -i | grep /var/www/testfile
# ausearch -i -k testfile_rule
Лог аудита хранится в директории
/var/log/audit
. Поддерживается работа через syslog, так что при желании этот лог выносится на внешний сервер, как я уже рассказывал в предыдущих заметках. Подобный аудит больше актуален для конфигурационных файлов служб, в том числе системных, а не исходников сайтов. Я просто показал пример.❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux #terminal
2👍152👎5
Вчера познакомился с необычной темой, связанной с кластером серверов точного времени pool.ntp.org, который я часто использую сам. Сразу приведу ссылку а потом своими словами расскажу, о чём там речь:
⇨ Катастрофа в российской зоне проекта NTPPool.org
Суть тут вот в чём. NTPPool.org - некоммерческая организация, которая объединяет в себе сервера времени со всего мира. Когда вы устанавливаете себе в качестве сервера времени pool.ntp.org, вы на самом деле получаете время не от него, а от подключенных к этому кластеру серверов.
Подключить такой сервер может каждый желающий. Для этого надо зарегистрироваться. Добавить через панель управления свой сервер, где работает публичная служба NTP и подтвердить права на этот сервер. На основе IP адреса этот сервер будет добавлен в свой сегмент, например в ru.pool.ntp.org. Все запросы пользователей из России будут направляться в сегмент серверов из ru.pool.ntp.org.
Проблема в том, что в октябре внезапно сильно вырос NTP трафик в сегменте RU. Из-за этого почти все сервера этой зоны отвалились. Кто-то из-за перегрузки перестал нормально отвечать и его выкинули из пула, а кто-то сам отключил свои сервера, так как не вывозил огромный трафик. У автора статьи он составлял 500 Мбит/с.
Автор предложил всем неравнодушным поднять свои сервера времени, чтобы оживить сегмент, размазать трафик по всем серверам и таким образом стабилизировать ситуацию. У меня есть такая возможность. Поднял пару небольших VPS. Для этого взял Debian 12. Поставил туда Chrony:
Нарисовал конфиг
Перезапустил сулжбу:
Убедился, что файрвол открыт и запросы на 123 порт к службе NTP проходят.
После этого зарегистрировался в ntppool.org и добавил свои сервера в панель управления. После добавление нужно подтвердить права на этот сервер. Надо нажать на кнопку Unverified и пройти подтверждение. Я через curl это сделал, было предложено на сайте:
В ответ получил url. Прошёл по нему и сервер в панели управления получил ✓, что означает подтверждение. После этого примерно 4 часа я получал только тестовые запросы к серверу, чтобы получить рейтинг. Так как он корректно работал, то быстро набрал рейтинг 10 и на него посыпались реальные запросы.
Какого-то шторма и огромного трафика я не получил. VPS имеют характеристики 1CPU/2GB, трафик в настройках сервера в веб панели ntppool указал 12 Mbit. В итоге на сервере имею трафик NTP запросов в районе 5 Mbit. Если есть желающие, можете присоединиться к активности.
❗️Только не запускайте NTP на домашних или рабочих серверах. Кто знает, может опять трафик сильно возрастёт. Положите входной канал. Используйте внешние, независимые VPS.
За трафиком можете следить с помощью bmon или nethogs:
А проверить, реально ли там NTP трафик можно через tcpdump:
Раньше не знал вообще, что в этот сервис можно самому добавляться. Выделю где-нибудь небольшой сервер, чтобы постоянно участвовать в этом. Надо будет только мониторинг сделать, чтобы отключать его, если трафик сильно вырастает.
#ntp
⇨ Катастрофа в российской зоне проекта NTPPool.org
Суть тут вот в чём. NTPPool.org - некоммерческая организация, которая объединяет в себе сервера времени со всего мира. Когда вы устанавливаете себе в качестве сервера времени pool.ntp.org, вы на самом деле получаете время не от него, а от подключенных к этому кластеру серверов.
Подключить такой сервер может каждый желающий. Для этого надо зарегистрироваться. Добавить через панель управления свой сервер, где работает публичная служба NTP и подтвердить права на этот сервер. На основе IP адреса этот сервер будет добавлен в свой сегмент, например в ru.pool.ntp.org. Все запросы пользователей из России будут направляться в сегмент серверов из ru.pool.ntp.org.
Проблема в том, что в октябре внезапно сильно вырос NTP трафик в сегменте RU. Из-за этого почти все сервера этой зоны отвалились. Кто-то из-за перегрузки перестал нормально отвечать и его выкинули из пула, а кто-то сам отключил свои сервера, так как не вывозил огромный трафик. У автора статьи он составлял 500 Мбит/с.
Автор предложил всем неравнодушным поднять свои сервера времени, чтобы оживить сегмент, размазать трафик по всем серверам и таким образом стабилизировать ситуацию. У меня есть такая возможность. Поднял пару небольших VPS. Для этого взял Debian 12. Поставил туда Chrony:
# apt install chrony
Нарисовал конфиг
/etc/chrony/conf.d/settings.conf
: pool ntp.msk-ix.ru iburst
pool ntp4.vniiftri.ru iburst
pool ntp5.vniiftri.ru iburst
allow all
ratelimit interval 3 burst 8 leak 4
Перезапустил сулжбу:
# systemctl restart chrony
Убедился, что файрвол открыт и запросы на 123 порт к службе NTP проходят.
После этого зарегистрировался в ntppool.org и добавил свои сервера в панель управления. После добавление нужно подтвердить права на этот сервер. Надо нажать на кнопку Unverified и пройти подтверждение. Я через curl это сделал, было предложено на сайте:
# curl --interface 74.137.192.103 https://validate4.ntppool.dev/p/
В ответ получил url. Прошёл по нему и сервер в панели управления получил ✓, что означает подтверждение. После этого примерно 4 часа я получал только тестовые запросы к серверу, чтобы получить рейтинг. Так как он корректно работал, то быстро набрал рейтинг 10 и на него посыпались реальные запросы.
Какого-то шторма и огромного трафика я не получил. VPS имеют характеристики 1CPU/2GB, трафик в настройках сервера в веб панели ntppool указал 12 Mbit. В итоге на сервере имею трафик NTP запросов в районе 5 Mbit. Если есть желающие, можете присоединиться к активности.
❗️Только не запускайте NTP на домашних или рабочих серверах. Кто знает, может опять трафик сильно возрастёт. Положите входной канал. Используйте внешние, независимые VPS.
За трафиком можете следить с помощью bmon или nethogs:
# apt install bmon nethogs
А проверить, реально ли там NTP трафик можно через tcpdump:
# tcpdump -nn -i ens3 port not ssh
Раньше не знал вообще, что в этот сервис можно самому добавляться. Выделю где-нибудь небольшой сервер, чтобы постоянно участвовать в этом. Надо будет только мониторинг сделать, чтобы отключать его, если трафик сильно вырастает.
#ntp
Хабр
Катастрофа в российской зоне проекта NTPPool.org
Привет, Хабр! Своим первым постом на площадке я хочу привлечь внимание к катастрофе, сложившейся на данный момент в RU-зоне проекта NTPPool.org . Я думаю, что проект в представлении не нуждается, тем...
4👍197👎2