🔝 ТОП постов за прошедший месяц. Все самые популярные публикации по месяцам можно почитать со соответствующему хэштэгу #топ. Отдельно можно посмотреть ТОП за прошлый год.
Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.me/boost/srv_admin.
Сегодня ТОПчик выпал на пятницу, так что обзор интересных роликов с youtube выйдет завтра. Там есть полезные видео, так что не захотел его пропускать.
📌 Больше всего пересылок:
◽️Топ-10 артефактов Linux для расследования инцидентов (980)
◽️Терминальный сервер на базе Windows 10,11 (806)
◽️Система управления инфраструктурой OpenRPort (686)
📌 Больше всего комментариев:
◽️Как найти работу в ИТ после 45 лет? (288)
◽️Тайная жизнь современных ОС (231)
◽️Новость с исключением русских мэйнтейнеров (208)
📌 Больше всего реакций:
◽️Шпаргалка по tcpdump (351)
◽️Терминальный сервер на базе Windows 10,11 (318)
◽️Настройка default_server в Nginx (279)
📌 Больше всего просмотров:
◽️Топ-10 артефактов Linux для расследования инцидентов (11612)
◽️Бесплатные курсы Yandex Cloud (11265)
◽️Настройка VM в Proxmox с помощью Terraform (10449)
Периодически просматриваю обратные ссылки на свой канал, в том числе из небольших личных каналов отдельных людей. Иногда попадаются такие, как на картинке ниже. Я вот думаю, это успех или строго противоположное от него? 😁
#топ
Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.me/boost/srv_admin.
Сегодня ТОПчик выпал на пятницу, так что обзор интересных роликов с youtube выйдет завтра. Там есть полезные видео, так что не захотел его пропускать.
📌 Больше всего пересылок:
◽️Топ-10 артефактов Linux для расследования инцидентов (980)
◽️Терминальный сервер на базе Windows 10,11 (806)
◽️Система управления инфраструктурой OpenRPort (686)
📌 Больше всего комментариев:
◽️Как найти работу в ИТ после 45 лет? (288)
◽️Тайная жизнь современных ОС (231)
◽️Новость с исключением русских мэйнтейнеров (208)
📌 Больше всего реакций:
◽️Шпаргалка по tcpdump (351)
◽️Терминальный сервер на базе Windows 10,11 (318)
◽️Настройка default_server в Nginx (279)
📌 Больше всего просмотров:
◽️Топ-10 артефактов Linux для расследования инцидентов (11612)
◽️Бесплатные курсы Yandex Cloud (11265)
◽️Настройка VM в Proxmox с помощью Terraform (10449)
Периодически просматриваю обратные ссылки на свой канал, в том числе из небольших личных каналов отдельных людей. Иногда попадаются такие, как на картинке ниже. Я вот думаю, это успех или строго противоположное от него? 😁
#топ
⇨ GitLab CI/CD - Главные Основы создания CI/CD Pipeline
Хорошее обзорное видео с примерами построения CI/CD на базе Gitlab. Автор наглядно на конкретном примере всё показывает и рассказывает. Кто не знаком с этим каналом, рекомендую. Там в прошлом есть обучающие курсы из серии видео для базовых вещей в DevOps.
⇨ Restic - решение для твоих бекапов
Пример использования популярного решения для бэкапов - Restic. Это быстрый, функциональный инструмент для бэкапов, состоящий из одного бинарника на Go. Кто не знаком, рекомендую посмотреть на него. Там снэпшоты, дедупликация, проверка целостности, куча бэкендов в поддержке и т.д.
⇨ Разбор падения Reddit – как крупнейший форум оказался в ауте!
Автор рассказал про одно из крупных падений Reddit из-за неудачного обновления Kubernetes. А отката неудачного обновления там не предусмотрено.
⇨ Docker Container Monitoring Dashboards both Open Source and Netdata!
Автор рассмотрел наиболее популярные инструменты для мониторинга контейнеров: cAdviser, Prometheus, Grafana, Netdata. Нравится этот канал, хорошее качество видео.
⇨ Simple HTTPs for Docker! // Traefik Tutorial (updated)
Большое обзорное виде про Traefik. Не знаю, чем его так любят блогеры, но про этот обратный прокси для веб сайтов больше всего роликов. Этот, получается, самый свежий будет. Тут всё: установка, базовая настройка, динамическая конфигурация, метки для Docker, TLS сертификаты и т.д.
⇨ How To Monitor Windows Services with ZABBIX ( Correct Way )
Любой, кто мониторил Windows хосты с помощью Zabbix знает, как там неудобно реализован мониторинг служб. Будет масса бесполезных уведомлений. Лично я всегда отключаю автообнаружение служб. А если надо что-то мониторить, настраиваю отдельно вручную. Автор показывает, как можно не отключая мониторинг всех служб, сделать исключение для некоторых из них. По мне, так сделано очень неудобно. Но пока других простых решений нет.
⇨ САМОПОДПИСАННЫЕ SSL СЕРТИФИКАТЫ ДЛЯ ДОМА.
Наглядное видео, как создать и использовать самоподписные сертификаты. В видео кратко рассмотрена теория по TLS, что содержат сертификаты, что такое цепочки доверия и т.д. Сертификаты автор выпускал с помощью XCA - локального приложения для управления сертификатами. Краткая инструкция по этой теме была у меня на канале. Рекомендую для быстрого копипаста в консоли.
⇨ Настройки WAF на Cloudflare для домашнего сервера
Обзор WAF на бесплатном тарифе от Cloudflare. Он, на удивление, не вводил никаких санкций и по-прежнему работает. Не знаю, насколько оправданно им сейчас пользоваться. Я буквально пару недель назад последнего пользователя отключил от CF. Просто на всякий случай. Никаких проблем в его работе не было. Хорошее бесплатное решение, чтобы скрыть реальные адреса своего проекта.
⇨ ASUS NUC 14 Pro Review // Best Intel NUC for Home Lab?
Обзор небольших minipc. Лично мне всегда нравились нюки за их компактный размер и хорошую производительность. Мечтаю себе купить 3 таких штуки для домашнего кластера, но всё время откладываю, потому что дома полно старого железа. Большой нужды в них нет, поэтому жалко денег. Их не назвать бюджетными устройствами, так как стоят больше аналогов. На авито много предложений за 70к+ р.
⇨ Нейросеть + 1С. RAG системы для бизнеса
Пример того, как может работать нейросеть в связке с БД интернет-магазина, чтобы отвечать на вопросы пользователей на основе актуальной информации. Смотрю подобные ролики просто из любопытства, чтобы иметь представление, как всё это работает.
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
GitLab CI/CD - Главные Основы создания CI/CD Pipeline
#devops #gitlab #девопс
https://gitlab.com/adv4000/myproject1
Если помог, поддержите парой баксов, даже Канадских :)
Boosty: https://boosty.to/adv-it/donate
PayPal: https://www.paypal.me/DenisAstahov
https://gitlab.com/adv4000/myproject1
Если помог, поддержите парой баксов, даже Канадских :)
Boosty: https://boosty.to/adv-it/donate
PayPal: https://www.paypal.me/DenisAstahov
Xshell+Xftp.png
1.1 MB
Продолжение темы про менеджеры удалённых подключений. В прошлой заметке в комментариях подсказали, что у программы Xshell, которой я пользуюсь последние лет 8, вновь вернулась бесплатная версия.
Истрия там такая. Последняя бесплатная версия была 5-ой. Причём в одно из последних обновлений этой ветки зашили тайм бомбу. В определённый день она стала писать, что больше не работает и надо обновиться на 6-ю версию. А там ограничение на 10 настроенных подключений, дальше только за деньги. Я нашёл последнюю версию без тайм бомбы и пользовался ей много лет.
Сейчас есть Xshell 8 без каких либо ограничений for Home and School use only. Скачать бесплатную версию можно на отдельной странице. Причём Xshell идёт в связке с бесплатной же Xftp для sftp соединений. Получается очень удобно. Достаточно в Xshell подключиться к серверу и из этой сессии вызвать Xftp для доступа к файлам.
Расскажу, что лично мне нравится в Xshell, что я столько лет ей пользуюсь и не перехожу на что-то другое, хотя пробовал все известные программы из этой области.
🟢 Внешний вид, а именно - возможность убрать всё лишнее. Пошло это со времён ноутбуков с небольшим экраном и удалённой работы. В Xshell можно оставить только окно с терминалом и заголовок (Alt+S). Всё остальное я открываю горячими клавишами. Когда всё настроишь, открывать нужно только список настроенных соединений. В итоге рабочее окно это только терминал.
🟢 Шифрование учётных данных мастер-паролем, который вводишь при старте программы. Без него она тоже запустится, но все пароли придётся вводить вручную.
🟢 Возможность настройки каталога с соединениями в заданной директории. У меня это Яндекс.Диск. В итоге имею возможность из разных рабочих мест использовать настроенные соединения. Креды зашифрованы, поэтому можно не переживать за хранение на облачном диске.
🟢 SSH + RDP соединения в одном клиенте. В 5-й версии RDP не было, теперь есть. Для меня это хорошая новость. Теперь можно исключить mRemoteNG, а использовать только Xshell.
🟢 Возможность ручной и автоматической записи сессий ssh в лог файлы. Для каких-то серверов у меня пишутся логи, для каких-то нет. Есть встроенный просмотрщик логов, который откроет весь лог и покажет его в консоли, как-будто вы просто отключились от сервера, но сохранили вывод консоли.
🟢 Возможность гибко управлять расположением вкладок с соединениями в окне программы. Из-за этого я не пользуюсь возможностями мультиплексоров, типа screen или tmux для открытия нескольких окон в рамках одного соединения. Мне удобнее управлять этим в Xshell.
Это основное, что вспомнил во время написания. В Xshell есть всё, что только можно ожидать от подобной программы. Я даже не придумаю, чего там не хватает. Из того, что есть ещё:
🟡 Возможность распознавать текст в консоли и что-то подсвечивать/подчёркивать в зависимости от содержимого. Можно открыть текстовый файл или вывести лог в консоль и подсветить слова или фразы средствами Xhell.
🟡 Можно сохранять свои быстрые команды или скрипты для запуска. Также есть поддержка сценариев, который можно записать на основе своих действий в консоли.
🟡 Умеет работать через proxy (для каждого соединения может быть свой), запускать X11 Forwarding или обычное перенаправление портов по ssh.
🟡 Огромное количество настроек и режимов терминала. Начиная от шрифтов и их размера, заканчивая VT modes и кодировками. Кто-то спрашивал, какой я использую шрифт в консоли. Обычно Cascadia Mono. Подсмотрел его в Windows Terminal. У меня он там стоял по умолчанию. Сразу понравился.
🟡 Подключения можно объединять в группы и управлять сразу группой. Например, отправить всем какую-то команду в консоль, открыть сразу всю группу и др.
Подводя итог скажу, что программа, на мой взгляд, одна из лучших. Я её называю бесплатной, но, конечно же, это не так. Бесплатна она только для домашнего пользования, хотя никакой проверки нет. Если захотите её купить, то стоит она 100$. На сайте есть список продавцов в РФ.
#менеджеры_подключений
Истрия там такая. Последняя бесплатная версия была 5-ой. Причём в одно из последних обновлений этой ветки зашили тайм бомбу. В определённый день она стала писать, что больше не работает и надо обновиться на 6-ю версию. А там ограничение на 10 настроенных подключений, дальше только за деньги. Я нашёл последнюю версию без тайм бомбы и пользовался ей много лет.
Сейчас есть Xshell 8 без каких либо ограничений for Home and School use only. Скачать бесплатную версию можно на отдельной странице. Причём Xshell идёт в связке с бесплатной же Xftp для sftp соединений. Получается очень удобно. Достаточно в Xshell подключиться к серверу и из этой сессии вызвать Xftp для доступа к файлам.
Расскажу, что лично мне нравится в Xshell, что я столько лет ей пользуюсь и не перехожу на что-то другое, хотя пробовал все известные программы из этой области.
🟢 Внешний вид, а именно - возможность убрать всё лишнее. Пошло это со времён ноутбуков с небольшим экраном и удалённой работы. В Xshell можно оставить только окно с терминалом и заголовок (Alt+S). Всё остальное я открываю горячими клавишами. Когда всё настроишь, открывать нужно только список настроенных соединений. В итоге рабочее окно это только терминал.
🟢 Шифрование учётных данных мастер-паролем, который вводишь при старте программы. Без него она тоже запустится, но все пароли придётся вводить вручную.
🟢 Возможность настройки каталога с соединениями в заданной директории. У меня это Яндекс.Диск. В итоге имею возможность из разных рабочих мест использовать настроенные соединения. Креды зашифрованы, поэтому можно не переживать за хранение на облачном диске.
🟢 SSH + RDP соединения в одном клиенте. В 5-й версии RDP не было, теперь есть. Для меня это хорошая новость. Теперь можно исключить mRemoteNG, а использовать только Xshell.
🟢 Возможность ручной и автоматической записи сессий ssh в лог файлы. Для каких-то серверов у меня пишутся логи, для каких-то нет. Есть встроенный просмотрщик логов, который откроет весь лог и покажет его в консоли, как-будто вы просто отключились от сервера, но сохранили вывод консоли.
🟢 Возможность гибко управлять расположением вкладок с соединениями в окне программы. Из-за этого я не пользуюсь возможностями мультиплексоров, типа screen или tmux для открытия нескольких окон в рамках одного соединения. Мне удобнее управлять этим в Xshell.
Это основное, что вспомнил во время написания. В Xshell есть всё, что только можно ожидать от подобной программы. Я даже не придумаю, чего там не хватает. Из того, что есть ещё:
🟡 Возможность распознавать текст в консоли и что-то подсвечивать/подчёркивать в зависимости от содержимого. Можно открыть текстовый файл или вывести лог в консоль и подсветить слова или фразы средствами Xhell.
🟡 Можно сохранять свои быстрые команды или скрипты для запуска. Также есть поддержка сценариев, который можно записать на основе своих действий в консоли.
🟡 Умеет работать через proxy (для каждого соединения может быть свой), запускать X11 Forwarding или обычное перенаправление портов по ssh.
🟡 Огромное количество настроек и режимов терминала. Начиная от шрифтов и их размера, заканчивая VT modes и кодировками. Кто-то спрашивал, какой я использую шрифт в консоли. Обычно Cascadia Mono. Подсмотрел его в Windows Terminal. У меня он там стоял по умолчанию. Сразу понравился.
🟡 Подключения можно объединять в группы и управлять сразу группой. Например, отправить всем какую-то команду в консоль, открыть сразу всю группу и др.
Подводя итог скажу, что программа, на мой взгляд, одна из лучших. Я её называю бесплатной, но, конечно же, это не так. Бесплатна она только для домашнего пользования, хотя никакой проверки нет. Если захотите её купить, то стоит она 100$. На сайте есть список продавцов в РФ.
#менеджеры_подключений
Занимался на днях в очередной раз перенастройкой своих VPN каналов. Честно говоря уже надоело этим заниматься, но внешние обстоятельства постоянно меняются. Хочу рассказать об одной особенности OpenVPN, которую я постоянно использую, и которая видится мне весьма полезной и функциональной.
OpenVPN сервер умеет управлять маршрутами внутри своих VPN сетей. Это получается второй контур маршрутизации поверх системного. Расскажу кратко, как это работает.
Допустим, у вас есть OpenVPN сервер, к которому подключаются разные клиенты. Будь то динамические подключения от удалённых сотрудников, либо другие одиночные сервера, маршрутизаторы своих внутренних подсетей. На сервере у вас указано, что все запросы к подсетям:
Отправляются в VPN сеть, конкретно в tun0 интерфейс. Настроить это можно сразу в конфиге openvpn для туннеля tun0:
OpenVPN сервер при запуске добавляет указанные маршруты в систему. Это можно сделать и вручную. Сервер при старте просто использует
За каждую указанную выше подсеть у нас отвечают разные клиенты VPN. Это может быть указано в его конфигурационном файле. Делается это так:
При подключении клиента с этой настройкой OpenVPN сервер понимает, что весь трафик в эту подсеть стоит адресовать этому клиенту. Если клиент поменяется, то эта настройка может переехать к другому.
Глобально настройки сервера и других VPN клиентов не меняются. Они просто подключаются и получают общую маршрутизацию. А по каким маршрутам внутри VPN побегут пакеты определяют настройки отдельных клиентов, которые выполняют роль маршрутизаторов. И этих клиентов можно легко заменить без необходимости менять какие-либо ещё настройки.
Подробнее об этом можно прочитать в документации. Искать по параметру
Мне пришлось заменить одного клиента на другого, через которого ходил трафик в youtube. Настройки остальных пользователей трогать не пришлось. У меня используется схема с единым OpenVPN сервером в РФ, к которому подключаются все клиенты. А он уже раскидывает трафик в зависимости от потребностей.
Набросал ниже схему, чтобы было понятно, о чём идёт речь.
#openvpn
OpenVPN сервер умеет управлять маршрутами внутри своих VPN сетей. Это получается второй контур маршрутизации поверх системного. Расскажу кратко, как это работает.
Допустим, у вас есть OpenVPN сервер, к которому подключаются разные клиенты. Будь то динамические подключения от удалённых сотрудников, либо другие одиночные сервера, маршрутизаторы своих внутренних подсетей. На сервере у вас указано, что все запросы к подсетям:
10.1.3.0/24
10.1.4.0/24
10.1.5.0/24
Отправляются в VPN сеть, конкретно в tun0 интерфейс. Настроить это можно сразу в конфиге openvpn для туннеля tun0:
route 10.1.3.0 255.255.255.0
route 10.1.4.0 255.255.255.0
route 10.1.5.0 255.255.255.0
OpenVPN сервер при запуске добавляет указанные маршруты в систему. Это можно сделать и вручную. Сервер при старте просто использует
/sbin/ip route add
для добавления маршрутов.За каждую указанную выше подсеть у нас отвечают разные клиенты VPN. Это может быть указано в его конфигурационном файле. Делается это так:
iroute 10.1.3.0 255.255.255.0
При подключении клиента с этой настройкой OpenVPN сервер понимает, что весь трафик в эту подсеть стоит адресовать этому клиенту. Если клиент поменяется, то эта настройка может переехать к другому.
Глобально настройки сервера и других VPN клиентов не меняются. Они просто подключаются и получают общую маршрутизацию. А по каким маршрутам внутри VPN побегут пакеты определяют настройки отдельных клиентов, которые выполняют роль маршрутизаторов. И этих клиентов можно легко заменить без необходимости менять какие-либо ещё настройки.
Подробнее об этом можно прочитать в документации. Искать по параметру
--iroute
для внутренней маршрутизации и --client-config-dir
для персональных настроек клиентов. Мне пришлось заменить одного клиента на другого, через которого ходил трафик в youtube. Настройки остальных пользователей трогать не пришлось. У меня используется схема с единым OpenVPN сервером в РФ, к которому подключаются все клиенты. А он уже раскидывает трафик в зависимости от потребностей.
Набросал ниже схему, чтобы было понятно, о чём идёт речь.
#openvpn
Я постоянно использую Grafana как в связке с Zabbix Server, так и с Prometheus. У неё довольно часто выходят новые версии, но я обычно не спешу с обновлением, так как нет большой нужды. Смотрю через неё простые дашборды, так что обновления обычно не приносят конкретно мне каких-то необходимых нововведений.
Очень долго использовал 7-ю версию, не обновлялся. Потом собрался с силами и обновился до 10-й. Пришлось повозиться и сделать сначала экспорт всего через API, а потом импортировать уже в новую 10-ю версию. Из-за большой разницы в версиях просто обновиться поверх старой не получилось.
Не так давно вышла очередная версия уже 11-й ветки. Там много изменений. Конкретно меня привлеки улучшения в плане оповещений (alerts), экспорт в pdf, некие действия (actions) в визуализациях. Полный список обновлений 11-й версии и недавней 11.3 смотрите по ссылкам:
⇨ What’s new in Grafana v11.0
⇨ Grafana 11.3 release
Обновление с 10-й версии прошло вообще без проблем. Конкретно у меня это выглядело так:
То есть просто удалил контейнер, обновил образ и запустил контейнер с теми же параметрами, что и предыдущий. Всё обновилось автоматически. По логам видно, что были выполнены все миграции со старой версии. Предварительно сделал снэпшот виртуалки перед обновлением.
Изменений реально много. Тут и алерты, и разные методы аутентификации, и управление пользователями, и ещё что-то. Сразу и не вспомню. Вижу, что меню слева сильно поменялось, но уже не помню, что там раньше было. Не так часто по настройкам лазил.
Если кому интересно, то я использую следующие дашборды в Grafana:
◽️Сводный дашборд активных триггеров со всех серверов Zabbix. Удобно все их открыть на одной странице. Разработчики Zabbix обещают реализовать это в рамках своего сервера, но пока такого нет. Объединить несколько серверов в дашборде Zabbix пока невозможно. Как это выглядит, можно посмотреть в моей статье на сайте. Внешний вид дашборда с триггерами с тех пор вообще не изменился.
◽️Дашборд Node Exporter Full от Prometheus для некоторых серверов
◽️Родной дашборд Angie от разработчиков.
◽️Дашборд от моего шаблона Zabbix для Linux Server.
◽️Мой сводный дашборд с личными метриками - сайты, каналы, статус компов в доме, на даче, электрокотёл, камеры и т.д.
Grafana - удобный универсальный инструмент, который позволил объединить две разнородные системы мониторинга в едином веб интерфейсе. Не приходится идти на компромиссы в выборе системы мониторинга. Какая лучше подходит, ту и используешь. А потом всё это объединяешь.
Изначально заметку планировал по нововведениям Grafana сделать, но там не так просто всё это попробовать. Сходу не нашёл, всё, что хотел. Соответственно и не потестировал ещё. Надо больше времени на это. Если наберётся материала на заметку, сделаю её отдельно. Отмечу только одно важное для меня изменение, которое сразу заметил. Если вкладку с Grafana открыть в фоне, то эта падлюка не подгружает метрики, пока не сделаешь её активной. А некоторые метрики долго подгружаются. Хочется её открыть в фоне, а потом к ней вернуться, когда она уже точно метрики подгрузит. Но не тут то было. Теперь она в таких вкладках из фона быстрее показывает метрики. Видно, что она всё равно что-то подгружает, но делает это быстрее, чем раньше.
#grafana #мониторинг
Очень долго использовал 7-ю версию, не обновлялся. Потом собрался с силами и обновился до 10-й. Пришлось повозиться и сделать сначала экспорт всего через API, а потом импортировать уже в новую 10-ю версию. Из-за большой разницы в версиях просто обновиться поверх старой не получилось.
Не так давно вышла очередная версия уже 11-й ветки. Там много изменений. Конкретно меня привлеки улучшения в плане оповещений (alerts), экспорт в pdf, некие действия (actions) в визуализациях. Полный список обновлений 11-й версии и недавней 11.3 смотрите по ссылкам:
⇨ What’s new in Grafana v11.0
⇨ Grafana 11.3 release
Обновление с 10-й версии прошло вообще без проблем. Конкретно у меня это выглядело так:
# docker stop grafana
# docker rm grafana
# docker pull grafana/grafana:latest
# docker run -d -p 3000:3000 --name=grafana \
-v grafana_data:/var/lib/grafana \
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,alexanderzobnin-zabbix-app" \
grafana/grafana:latest
То есть просто удалил контейнер, обновил образ и запустил контейнер с теми же параметрами, что и предыдущий. Всё обновилось автоматически. По логам видно, что были выполнены все миграции со старой версии. Предварительно сделал снэпшот виртуалки перед обновлением.
Изменений реально много. Тут и алерты, и разные методы аутентификации, и управление пользователями, и ещё что-то. Сразу и не вспомню. Вижу, что меню слева сильно поменялось, но уже не помню, что там раньше было. Не так часто по настройкам лазил.
Если кому интересно, то я использую следующие дашборды в Grafana:
◽️Сводный дашборд активных триггеров со всех серверов Zabbix. Удобно все их открыть на одной странице. Разработчики Zabbix обещают реализовать это в рамках своего сервера, но пока такого нет. Объединить несколько серверов в дашборде Zabbix пока невозможно. Как это выглядит, можно посмотреть в моей статье на сайте. Внешний вид дашборда с триггерами с тех пор вообще не изменился.
◽️Дашборд Node Exporter Full от Prometheus для некоторых серверов
◽️Родной дашборд Angie от разработчиков.
◽️Дашборд от моего шаблона Zabbix для Linux Server.
◽️Мой сводный дашборд с личными метриками - сайты, каналы, статус компов в доме, на даче, электрокотёл, камеры и т.д.
Grafana - удобный универсальный инструмент, который позволил объединить две разнородные системы мониторинга в едином веб интерфейсе. Не приходится идти на компромиссы в выборе системы мониторинга. Какая лучше подходит, ту и используешь. А потом всё это объединяешь.
Изначально заметку планировал по нововведениям Grafana сделать, но там не так просто всё это попробовать. Сходу не нашёл, всё, что хотел. Соответственно и не потестировал ещё. Надо больше времени на это. Если наберётся материала на заметку, сделаю её отдельно. Отмечу только одно важное для меня изменение, которое сразу заметил. Если вкладку с Grafana открыть в фоне, то эта падлюка не подгружает метрики, пока не сделаешь её активной. А некоторые метрики долго подгружаются. Хочется её открыть в фоне, а потом к ней вернуться, когда она уже точно метрики подгрузит. Но не тут то было. Теперь она в таких вкладках из фона быстрее показывает метрики. Видно, что она всё равно что-то подгружает, но делает это быстрее, чем раньше.
#grafana #мониторинг
Вчера в комментариях посоветовали удобную программу для просмотра серверных логов браузером. Сразу попробовал - очень понравилась утилита. Речь пойдёт про logdy. Это одиночный бинарник на Go. Установить можно так:
Скрипт на один экран, который просто определяет версию системы и скачивает скомпилированный бинарник из github. Можно и вручную скачать.
Использовать logdy можно в разных режимах. Самый простой - отправить в него через пайп содержимое лога:
По умолчанию он стартует на localhost, поэтому я принудительно через ключ запустил его на всех интерфейсах. Если не указать порт, то он запустится на 8080. Можно идти по IP адресу сервера на порт 8080 и смотреть в браузере содержимое лога syslog. Можно то же самое сделать вот так:
Вообще, эта штука придумана в первую очередь для разработчиков. В блоге авторов есть пример использования во время локальной разработки. Допустим, вы у себя на машине запускаете проект под node.js:
Далее перемещаетесь в VS Code, открываете через консоль команд (Ctrl+Shift+P) "Simple Browser: Show" и там указываете адрес веб интерфейса. Для локальной разработки это будет http://localhost:8080. Таким образом вы в одном месте можете править код, перезапускать приложение и тут же видеть его логи.
То же самое можно делать для Docker контейнеров:
И погнали смотреть логи контейнера. Можно объединить разные контейнеры или логи. Делается это следующим образом:
Запустили logdy в режиме сокетов, на которые он принимает логи и отображает в веб интерфейсе. И отправили каждый контейнер в свой сокет. В веб интерфейсе можно как вместе смотреть эти логи, так и разделять по сокетам.
У logdy даже API есть для отправки туда логов с аутентификацией по токену. Выглядит это примерно так. Запускаем logdy с api:
Отправляем в него логи:
В веб интерфейс прилетит этот лог. В него можно stdin отправить:
У logdy хорошая подробная документация, где описаны все ключи CLI и приведены примеры разных режимов работы и использования. Такой небольшой, нишевый, удобный продукт. Через ключи запуска веб интерфейс можно закрыть паролем.
Рекомендую взять на заметку. Иногда хочется открыть какой-то лог или логи в браузере. Через logdy это удобно сделать. Он может не только отобразить логи, но и сразу распарсить их, разбить на колонки, сделать какую-то сортировку и т.д. В документации есть примеры. На картинке ниже показано, как он распарсил лог веб севрера в формате json.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
⇨ Сайт / Исходники / Demo
#logs #devops
# curl https://logdy.dev/install.sh | sh
Скрипт на один экран, который просто определяет версию системы и скачивает скомпилированный бинарник из github. Можно и вручную скачать.
Использовать logdy можно в разных режимах. Самый простой - отправить в него через пайп содержимое лога:
# tail -f /var/log/syslog | logdy --ui-ip=0.0.0.0
По умолчанию он стартует на localhost, поэтому я принудительно через ключ запустил его на всех интерфейсах. Если не указать порт, то он запустится на 8080. Можно идти по IP адресу сервера на порт 8080 и смотреть в браузере содержимое лога syslog. Можно то же самое сделать вот так:
# logdy --ui-ip=0.0.0.0 follow /var/log/syslog
Вообще, эта штука придумана в первую очередь для разработчиков. В блоге авторов есть пример использования во время локальной разработки. Допустим, вы у себя на машине запускаете проект под node.js:
# node app.js | logdy
Далее перемещаетесь в VS Code, открываете через консоль команд (Ctrl+Shift+P) "Simple Browser: Show" и там указываете адрес веб интерфейса. Для локальной разработки это будет http://localhost:8080. Таким образом вы в одном месте можете править код, перезапускать приложение и тут же видеть его логи.
То же самое можно делать для Docker контейнеров:
# docker logs 761965fa13b2 --follow | logdy --ui-ip=0.0.0.0
И погнали смотреть логи контейнера. Можно объединить разные контейнеры или логи. Делается это следующим образом:
# logdy --ui-ip=0.0.0.0 socket 8123 8124
# docker logs d20339949095 --follow | logdy forward 8123
# docker logs 761965fa13b2 --follow | logdy forward 8124
Запустили logdy в режиме сокетов, на которые он принимает логи и отображает в веб интерфейсе. И отправили каждый контейнер в свой сокет. В веб интерфейсе можно как вместе смотреть эти логи, так и разделять по сокетам.
У logdy даже API есть для отправки туда логов с аутентификацией по токену. Выглядит это примерно так. Запускаем logdy с api:
# logdy --ui-ip=0.0.0.0 --api-key=secrettoken
Отправляем в него логи:
curl --location --request POST 'http://1.2.3.4:8080/api/log' \
--header 'Authorization: Bearer secrettoken' \
--header 'Content-Type: application/json' \
--data '{"logs": [{"log": "this is a log message as a string" }],"source":"machine identifier"}'
В веб интерфейс прилетит этот лог. В него можно stdin отправить:
# logdy stdin
У logdy хорошая подробная документация, где описаны все ключи CLI и приведены примеры разных режимов работы и использования. Такой небольшой, нишевый, удобный продукт. Через ключи запуска веб интерфейс можно закрыть паролем.
Рекомендую взять на заметку. Иногда хочется открыть какой-то лог или логи в браузере. Через logdy это удобно сделать. Он может не только отобразить логи, но и сразу распарсить их, разбить на колонки, сделать какую-то сортировку и т.д. В документации есть примеры. На картинке ниже показано, как он распарсил лог веб севрера в формате json.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
⇨ Сайт / Исходники / Demo
#logs #devops
Неоднократно видел в комментариях и обсуждениях Ceph упоминание о VitaStor. Автор называет её быстрой и простой распределённой программной СХД. Архитектурно она сильно похожа на Ceph, так что если кто-то с ней знаком, попробовать Vitastor не составит труда. Я где-то за пару часов разобрался, настроил тестовый стенд и проверил в работе.
Сразу дам ссылку на выступление автора, где он подробно рассказывает об истории создания VitaStor. В первой половине презентации он делает обзор современных кластерных средств хранения данных. В целом всё выступление интересное, я целиком прослушал без ускорения.
▶️ Vitastor, или Как я написал свою хранилку
В сети мало информации про VitaStor, а сравнительных тестов так вообще почти нет. Есть от самого автора, он их приводит в выступлении. И есть статья на хабре от небезызвестного Kvaps, где он сравнивает разные распределённые хранилища: Linstor, Ceph, Mayastor и Vitastor. По этим имеющимся данным VitaStor значительно быстрее Ceph при схожих моделях использования. По сути это прямой аналог, который можно просто взять и поставить вместо Ceph.
Автор VitaStor - наш соотечественник, так что документация проста и понятна для русского человека. Я не буду приводить подробно все команды для установки и использования, потому что они не уместятся в заметке. Дам только ссылки из документации, по которым я делал. Больше никаких источников не использовал. Установка очень простая.
Сразу упомяну, что у VitaStor есть готовые плагины для использования с современными системами виртуализации и контейнеризации: Proxmox, OpenStack, Kubernetes CSI.
Основное предназначение VitaStor - сетевые блочные устройства для систем виртуализации. То есть это в первую очередь кластер для дисков виртуалок. По аналогии с CephFS есть кластерная файловая система VitastorFS. В планах обозначено объектное хранилище S3 - Vitastor S3.
Я взял тестовый кластер из 3-х виртуальных машин под ОС Debian 12. В каждую из них добавил по 2 виртуальных диска. Один под систему, второй под сетевое хранилище. Зашёл в раздел установка из пакетов и выполнил установку.
Далее пошёл в раздел быстрый старт и собрал кластер практически в режиме копирования и вставки. Порядок действий следующий:
1️⃣ Настраиваем мониторы на основе etcd. Аналог MON в Ceph.
2️⃣ Настраиваем OSD (Object Storage Device). В Ceph так же называется.
3️⃣ Создаём пул.
4️⃣ Создаём образ диска.
Процедура 1 в 1 как с Ceph. Дальше я немного замешкался, так как не понял, как теперь подключать созданный диск. Можно было создать VitastorFS, но мне хотелось именно блочные устройства попробовать.
Немного походил по документации и разобрался. Автор пишет, что лучший интерфейс для подключения дисков к системе - VDUSE (vDPA Device in Userspace), так как поддерживается на уровне ядра и работает в целом быстрее, чем что либо другое. Альтернатива - NBD.
Я подключил диск через VDUSE. Он поддерживается ядром, начиная с версии 5.15, но только в 6.6 и выше модуль ядра включён по умолчанию. На Debian 12 сейчас ядро 6.1, так что модуль пришлось собирать вручную по инструкции. Получилось всё без особых проблем простым копированием команд. В итоге подключил диск и получил блочное устройство
Немного погонял тесты, но толку от них никаких, так как собрано всё было в рамках одного сервера на виртуальных машинах. Никаких сравнительных тестов с другими системами хранения тоже не проводил, так как это трудоёмкая задача.
Отмечу для тех, кому это важно. Vitastor есть в реестре российского программного обеспечения. Можно без проблем использовать в рамках импортозамещения.
Ещё ссылка на интересное выступление автора, где он рассказывает про архитектуру:
▶️ Архитектура Vitastor. Тёмная сторона моей распределённой СХД
Продукт, конечно интересный. Понравился комментарий автора по поводу производительности Ceph. Он предполагает, что ускорить его невозможно, так как там более миллиона строк кода. Проще написать с нуля, что он и сделал.
⇨ Сайт / Исходники
#ceph #fileserver #devops #отечественное
Сразу дам ссылку на выступление автора, где он подробно рассказывает об истории создания VitaStor. В первой половине презентации он делает обзор современных кластерных средств хранения данных. В целом всё выступление интересное, я целиком прослушал без ускорения.
▶️ Vitastor, или Как я написал свою хранилку
В сети мало информации про VitaStor, а сравнительных тестов так вообще почти нет. Есть от самого автора, он их приводит в выступлении. И есть статья на хабре от небезызвестного Kvaps, где он сравнивает разные распределённые хранилища: Linstor, Ceph, Mayastor и Vitastor. По этим имеющимся данным VitaStor значительно быстрее Ceph при схожих моделях использования. По сути это прямой аналог, который можно просто взять и поставить вместо Ceph.
Автор VitaStor - наш соотечественник, так что документация проста и понятна для русского человека. Я не буду приводить подробно все команды для установки и использования, потому что они не уместятся в заметке. Дам только ссылки из документации, по которым я делал. Больше никаких источников не использовал. Установка очень простая.
Сразу упомяну, что у VitaStor есть готовые плагины для использования с современными системами виртуализации и контейнеризации: Proxmox, OpenStack, Kubernetes CSI.
Основное предназначение VitaStor - сетевые блочные устройства для систем виртуализации. То есть это в первую очередь кластер для дисков виртуалок. По аналогии с CephFS есть кластерная файловая система VitastorFS. В планах обозначено объектное хранилище S3 - Vitastor S3.
Я взял тестовый кластер из 3-х виртуальных машин под ОС Debian 12. В каждую из них добавил по 2 виртуальных диска. Один под систему, второй под сетевое хранилище. Зашёл в раздел установка из пакетов и выполнил установку.
Далее пошёл в раздел быстрый старт и собрал кластер практически в режиме копирования и вставки. Порядок действий следующий:
Процедура 1 в 1 как с Ceph. Дальше я немного замешкался, так как не понял, как теперь подключать созданный диск. Можно было создать VitastorFS, но мне хотелось именно блочные устройства попробовать.
Немного походил по документации и разобрался. Автор пишет, что лучший интерфейс для подключения дисков к системе - VDUSE (vDPA Device in Userspace), так как поддерживается на уровне ядра и работает в целом быстрее, чем что либо другое. Альтернатива - NBD.
Я подключил диск через VDUSE. Он поддерживается ядром, начиная с версии 5.15, но только в 6.6 и выше модуль ядра включён по умолчанию. На Debian 12 сейчас ядро 6.1, так что модуль пришлось собирать вручную по инструкции. Получилось всё без особых проблем простым копированием команд. В итоге подключил диск и получил блочное устройство
/dev/vda
. Немного погонял тесты, но толку от них никаких, так как собрано всё было в рамках одного сервера на виртуальных машинах. Никаких сравнительных тестов с другими системами хранения тоже не проводил, так как это трудоёмкая задача.
Отмечу для тех, кому это важно. Vitastor есть в реестре российского программного обеспечения. Можно без проблем использовать в рамках импортозамещения.
Ещё ссылка на интересное выступление автора, где он рассказывает про архитектуру:
▶️ Архитектура Vitastor. Тёмная сторона моей распределённой СХД
Продукт, конечно интересный. Понравился комментарий автора по поводу производительности Ceph. Он предполагает, что ускорить его невозможно, так как там более миллиона строк кода. Проще написать с нуля, что он и сделал.
⇨ Сайт / Исходники
#ceph #fileserver #devops #отечественное
Please open Telegram to view this post
VIEW IN TELEGRAM
На днях нужно было вытащить один файл из Docker образа. Не из контейнера, а именно образа, так как не хотелось запускать контейнер. Никак не мог сообразить, как это сделать. Помню, что уже когда-то ломал над этим голову, и там почему-то нет простого решения. По крайней мере я его не знаю.
Решение такое. Образ надо скачать, создать контейнер, но не запускать его.
Теперь можно забрать нужный файл:
Либо выгрузить всё содержимое образа:
Заодно расскажу про один полезный инструмент, который рекомендую сохранить тем, кто работает с Docker. Dive - небольшая утилита на Go, которая позволяет просматривать слои образов и видеть, в каком слое что добавилось. У утилиты простой и наглядный tui интерфейс.
Можно скачать бинарник dive из репозитория или запустить сразу в докере и посмотреть нужный тебе образ:
Увидите структуру файловой системы с подсветкой цветом разных слоёв. Если постоянно работаете на своей машине с образами, сделайте alias:
Теперь можно просматривать образы так:
Удобная штука. Помимо отображения слоёв, она умеет проверять, не раздут ли размер образа из-за неправильных инструкций для сборки. Для этого можно собрать образ с помощью dive и сразу же получить результат анализа. То есть вместо docker build делаем dive build и получаем оценку. Подобную проверку можно встроить в CI систему и выполнять автоматически. В репозитории приведены примеры.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#docker #devops
Решение такое. Образ надо скачать, создать контейнер, но не запускать его.
# docker pull nginx:latest
# docker create --name nginx nginx:latest
Теперь можно забрать нужный файл:
# docker cp nginx:/docker-entrypoint.d/30-tune-worker-processes.sh ~/
Либо выгрузить всё содержимое образа:
# docker export nginx -o ~/nginx-docker.tar.gz
Заодно расскажу про один полезный инструмент, который рекомендую сохранить тем, кто работает с Docker. Dive - небольшая утилита на Go, которая позволяет просматривать слои образов и видеть, в каком слое что добавилось. У утилиты простой и наглядный tui интерфейс.
Можно скачать бинарник dive из репозитория или запустить сразу в докере и посмотреть нужный тебе образ:
# docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive nginx:latest
Увидите структуру файловой системы с подсветкой цветом разных слоёв. Если постоянно работаете на своей машине с образами, сделайте alias:
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
Теперь можно просматривать образы так:
# dive nginx:latest
Удобная штука. Помимо отображения слоёв, она умеет проверять, не раздут ли размер образа из-за неправильных инструкций для сборки. Для этого можно собрать образ с помощью dive и сразу же получить результат анализа. То есть вместо docker build делаем dive build и получаем оценку. Подобную проверку можно встроить в CI систему и выполнять автоматически. В репозитории приведены примеры.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#docker #devops
На прошлой неделе посмотрел видео про современную и функциональную open source платформу для управления веб приложениями, запускаемыми в Docker контейнерах. Речь пойдёт про Coolify. Вот видео, о котором я говорю:
▶️ Coolify - deploy services locally, or on remote servers!
Не стал его включать в регулярную подборку, потому что решил развернуть и попробовать систему, а потом отдельно про неё написать. Сейчас это сделаю.
Для того, чтобы сразу было понятно, что такое Coolify, скажу, что это условный аналог известного сервиса Heroku. Конечно, не такой функциональный, но он и появился не так давно. При этом на github у него огромное количество звёзд (34k), много спонсоров, большое сообщество и регулярные обновления. Проект монетизируется за счёт облачной версии.
Поясню своими словами, как работает Coolify. Условно её можно сравнить с панелью управления хостингом или VPS, только тут конечные сущности - приложения, запускаемые в контейнерах.
Вы разворачиваете панель и добавляете в неё следующие объекты:
▪️чистые сервера на базе Linux, которыми coolify управляет по ssh;
▪️s3 хранилища;
▪️git репозитории с вашим кодом;
▪️проекты, которые могут состоять из разных окружений (dev, prod и т.д.)
▪️переменные, ключи и токены;
▪️команды и пользователей
После этого вы идёте в один из проектов и создаёте там новый ресурс в виде вашего приложения, запущенного из готового образа, из Dockerfile или Docker-compose. Связываете это приложение, если необходимо, с соответствующим репозиторием кода, публикуете его на одном из добавленных серверов. Настраиваете к нему доступ по отдельному доменному имени. Для этого Coolify поднимает свой обратный прокси на базе Caddy или Traefik, получает сертификаты от Let's Encrypt.
Вы всем этим управляете из общего веб интерфейса с дашбордами. Все проекты и приложения, соответственно, бьются на команды с разными правами доступа. Помимо ваших приложений, подобным образом можно разворачивать популярные СУБД или преднастроенные сервисы на базе образов от linuxserver.io.
Проект довольно навороченный. Там много всего добавлено. Есть API, аутентификация через различных OAuth провайдеров, публикация ваших приложений через какой-то dyndns сервис, вебхуки, оповещения. Есть возможность подключаться к консоли серверов и контейнеров. Можно не ходить напрямую по ssh, а всем управлять через веб панель.
Даже не знаю, с чем Coolify сравнить. Не припоминаю похожих проектов. Он интересен и для личной инфраструктуры, если у вас большой набор своих сервисов, и для каких-то команд, особенно разработчиков. Можно всё для них автоматизировать и дать доступ. Они и консоли, и логи, и бэкапы своих приложений увидят. Смогут всем этим управлять, к примеру, в dev окружении и только смотреть в prod.
❗️Отдельно подчеркну ещё раз. Всё это только для Docker контейнеров. Деплоить что-то в обычное окружение Linux нельзя. Coolify автоматом на все добавляемые сервера устанавливает Docker.
⇨ 🌐 Сайт (через VPN) / 4️⃣ Исходники / Скриншоты интерфейса
#docker #devops #cicd
▶️ Coolify - deploy services locally, or on remote servers!
Не стал его включать в регулярную подборку, потому что решил развернуть и попробовать систему, а потом отдельно про неё написать. Сейчас это сделаю.
Для того, чтобы сразу было понятно, что такое Coolify, скажу, что это условный аналог известного сервиса Heroku. Конечно, не такой функциональный, но он и появился не так давно. При этом на github у него огромное количество звёзд (34k), много спонсоров, большое сообщество и регулярные обновления. Проект монетизируется за счёт облачной версии.
Поясню своими словами, как работает Coolify. Условно её можно сравнить с панелью управления хостингом или VPS, только тут конечные сущности - приложения, запускаемые в контейнерах.
Вы разворачиваете панель и добавляете в неё следующие объекты:
▪️чистые сервера на базе Linux, которыми coolify управляет по ssh;
▪️s3 хранилища;
▪️git репозитории с вашим кодом;
▪️проекты, которые могут состоять из разных окружений (dev, prod и т.д.)
▪️переменные, ключи и токены;
▪️команды и пользователей
После этого вы идёте в один из проектов и создаёте там новый ресурс в виде вашего приложения, запущенного из готового образа, из Dockerfile или Docker-compose. Связываете это приложение, если необходимо, с соответствующим репозиторием кода, публикуете его на одном из добавленных серверов. Настраиваете к нему доступ по отдельному доменному имени. Для этого Coolify поднимает свой обратный прокси на базе Caddy или Traefik, получает сертификаты от Let's Encrypt.
Вы всем этим управляете из общего веб интерфейса с дашбордами. Все проекты и приложения, соответственно, бьются на команды с разными правами доступа. Помимо ваших приложений, подобным образом можно разворачивать популярные СУБД или преднастроенные сервисы на базе образов от linuxserver.io.
Проект довольно навороченный. Там много всего добавлено. Есть API, аутентификация через различных OAuth провайдеров, публикация ваших приложений через какой-то dyndns сервис, вебхуки, оповещения. Есть возможность подключаться к консоли серверов и контейнеров. Можно не ходить напрямую по ssh, а всем управлять через веб панель.
Даже не знаю, с чем Coolify сравнить. Не припоминаю похожих проектов. Он интересен и для личной инфраструктуры, если у вас большой набор своих сервисов, и для каких-то команд, особенно разработчиков. Можно всё для них автоматизировать и дать доступ. Они и консоли, и логи, и бэкапы своих приложений увидят. Смогут всем этим управлять, к примеру, в dev окружении и только смотреть в prod.
❗️Отдельно подчеркну ещё раз. Всё это только для Docker контейнеров. Деплоить что-то в обычное окружение Linux нельзя. Coolify автоматом на все добавляемые сервера устанавливает Docker.
⇨ 🌐 Сайт (через VPN) / 4️⃣ Исходники / Скриншоты интерфейса
#docker #devops #cicd
У меня на сайте есть старенькая игра про системного администратора, написанная ещё на flash. Эту технологию уже давно отовсюду выпилили. В комментариях к игре один человек предложил простой и быстрый способ запуска через специально собранный для этого контейнер:
Можно идти браузером по IP адресу сервера, где запущен контейнер, на порт 8080 и играть в игру. Под капотом там apache guacamole, xrdp и основа в виде контейнера Ubuntu.
Решение, понятное дело, только для разовых задач. Автор какой-то китаец, ничего не обновляется. Если открыть не напрямую сразу swf файл, а только браузер, то он у меня постоянно падал при сёрфинге по сайтам. А если сразу открыть flash, то нормально.
Туда ещё по rdp можно подключаться при желании:
Некоторые подробности есть в репозитории разработчика.
#игра
# docker run --rm -e "STARTUP=firefox https://serveradmin.ru/files/sysadmin.swf" -p 8080:8080 --name play-adobe-flash-after-eol jchprj/play-adobe-flash-after-eol
Можно идти браузером по IP адресу сервера, где запущен контейнер, на порт 8080 и играть в игру. Под капотом там apache guacamole, xrdp и основа в виде контейнера Ubuntu.
Решение, понятное дело, только для разовых задач. Автор какой-то китаец, ничего не обновляется. Если открыть не напрямую сразу swf файл, а только браузер, то он у меня постоянно падал при сёрфинге по сайтам. А если сразу открыть flash, то нормально.
Туда ещё по rdp можно подключаться при желании:
# docker run -p 8080:8080 -p 3389:3389 --name play-adobe-flash-after-eol jchprj/play-adobe-flash-after-eol
Некоторые подробности есть в репозитории разработчика.
#игра
В одном из видео с канала samohosting увидел интересную бесплатную утилиту с открытым исходным кодом XCA для создания и управления собственным удостоверяющим центром для выпуска сертификатов под различные службы. Я уже публиковал видео с этого канала в подборках, а сейчас хочу сделать акцент на нём. Очень качественный контент, различные тематики, подача. Рекомендую. Мне хоть и не все темы оттуда интересны, но стоит отдать должное создателю. Человек старается сделать полезный материал.
Возвращаюсь к XCA. Это кроссплатформенное приложение с GUI под все популярные системы: Windows, Linux, MacOS. Под винду можно как портированную версию скачать, так и установить из магазина.
XCA можно использовать для создания сертификатов для таких служб, как OpenVPN, IPsec, веб и почтовые сервера. Подойдёт для любых служб, которые используют TLS сертификаты. Очевидно, что речь идёт о внутренней инфраструктуре, где вы сможете раздать пользователям свой CA, чтобы софт не выдавал предупреждения о недоверенных сертификатах. Хотя для каких-то служб это не очень актуально. Например, для OpenVPN это некритично. Там сертификат CA обычно идёт вместе с конфигурацией без необходимости отдельной установки в систему.
Приложение очень простое и интуитивно понятное, особенно для тех, кто первый раз сталкивается с этой темой. Есть русский язык. Помню, как для меня было суперсложно и непонятно, когда впервые разбирался со скриптами easy-rsa для настройки своего первого OpenVPN сервера. Делал всё это в консоли, где никаких наглядных связей и привязок, только команды для генерации и ещё более длинные команды на базе openssl для просмотра сертификатов.
С одной стороны это хорошо, так как позволило быстрее вникнуть, напрячь мозги и разобраться с темой. С другой, не всем и не часто приходится этим заниматься, так что для разовых задач может быть проще и быстрее всё сделать в GUI. Если у вас нет дальнейших задач по автоматизации процессов, связанных с выпуском сертификатов, то в GUI по-любому будет быстрее и проще работать с сертификатами.
Работа с XCA выглядит следующим образом:
1️⃣ Создаёте новую зашифрованную базу для хранения приватных ключей.
2️⃣ Создаёте новый удостоверяющий центр (Certification authority - CA) с нужными вам параметрами. Основной - срок действия корневого сертификата. Лучше ставить побольше. На моей практике даже 10-ти летние сертификаты протухали, что приводило к проблемам и дополнительной работе.
3️⃣ По желанию можно выпустить промежуточный сертификат, который сделает более безопасной всю цепочку сертификации. В общем случае можно этого не делать.
4️⃣ Создаёте уже клиентские сертификаты. Делаете экспорт и отдаёте сервисам или пользователям.
То есть всё как обычно при работе со своим CA. У меня были заметки по этой теме, но только для консоли:
▪️openssl - все действия на базе openssl.
▪️step-ca - своя локальная служба для управления CA с простой автоматизацией перевыпуска.
▪️CFSSL - современная одиночная утилита от cloudflare с конфигами в формате json.
Странно, что я впервые услышал об этой программе. Вообще не знал и не использовал ни одну локальную программу по этой теме. Веб интерфейсы видел, пользовался. В pfSense, кстати, удобный веб интерфейс для работы со своим CA.
⇨ 🌐 Сайт / Исходники
#security #tls
Возвращаюсь к XCA. Это кроссплатформенное приложение с GUI под все популярные системы: Windows, Linux, MacOS. Под винду можно как портированную версию скачать, так и установить из магазина.
XCA можно использовать для создания сертификатов для таких служб, как OpenVPN, IPsec, веб и почтовые сервера. Подойдёт для любых служб, которые используют TLS сертификаты. Очевидно, что речь идёт о внутренней инфраструктуре, где вы сможете раздать пользователям свой CA, чтобы софт не выдавал предупреждения о недоверенных сертификатах. Хотя для каких-то служб это не очень актуально. Например, для OpenVPN это некритично. Там сертификат CA обычно идёт вместе с конфигурацией без необходимости отдельной установки в систему.
Приложение очень простое и интуитивно понятное, особенно для тех, кто первый раз сталкивается с этой темой. Есть русский язык. Помню, как для меня было суперсложно и непонятно, когда впервые разбирался со скриптами easy-rsa для настройки своего первого OpenVPN сервера. Делал всё это в консоли, где никаких наглядных связей и привязок, только команды для генерации и ещё более длинные команды на базе openssl для просмотра сертификатов.
С одной стороны это хорошо, так как позволило быстрее вникнуть, напрячь мозги и разобраться с темой. С другой, не всем и не часто приходится этим заниматься, так что для разовых задач может быть проще и быстрее всё сделать в GUI. Если у вас нет дальнейших задач по автоматизации процессов, связанных с выпуском сертификатов, то в GUI по-любому будет быстрее и проще работать с сертификатами.
Работа с XCA выглядит следующим образом:
То есть всё как обычно при работе со своим CA. У меня были заметки по этой теме, но только для консоли:
▪️openssl - все действия на базе openssl.
▪️step-ca - своя локальная служба для управления CA с простой автоматизацией перевыпуска.
▪️CFSSL - современная одиночная утилита от cloudflare с конфигами в формате json.
Странно, что я впервые услышал об этой программе. Вообще не знал и не использовал ни одну локальную программу по этой теме. Веб интерфейсы видел, пользовался. В pfSense, кстати, удобный веб интерфейс для работы со своим CA.
⇨ 🌐 Сайт / Исходники
#security #tls
Please open Telegram to view this post
VIEW IN TELEGRAM
Решил по приколу у различных нейросетей поспрашивать шутки про системных администраторов. Отправлял один и тот же запрос:
Придумай шутку про системного администратора.
Вот наиболее прикольные ответы:
- Почему системный администратор всегда спит спокойно?
- Потому что у него всегда есть резервная копия!
- Почему системный администратор никогда не теряет ключи?
- Потому что у него всегда есть бэкапы! 🔑💻🤣
- Почему системный администратор никогда не делает зарядку?
- Потому что ему всегда достаточно просто перезагрузить систему! 😄💻🔄
- Почему системный администратор всегда спокоен?
- Потому что он знает, что если что-то пойдет не так, у него всегда есть "план восстановления"!
Почему-то все шутки получались очень похожими, хотя я использовал разные модели. Когда надоело видеть шутки с "почему", стал спрашивать по-другому:
Придумай шутку про системного администратора без вопроса "почему".
Системный администратор — это человек, который знает, где хранятся все данные, но не помнит, где положил ключи от машины.
Системный администратор заходит в бар, заказывает пиво и говорит: "Надеюсь, у вас есть резервная копия этого напитка!"
- Зачем системный администратор всегда носит с собой лестницу?
- Чтобы подняться на новый уровень безопасности! 😄🔧
Системный администратор так любит свою работу, что даже на отдыхе обсуждает проблемы с маршрутизатором... с местным Wi-Fi! 😄
👆 Вот это было ничего 😂
Системный администратор заходит в аптеку и говорит: "Мне, пожалуйста, что-то от усталости. И чтобы не требовало перезагрузки!"
Почему системный администратор всегда в хорошем настроении? Потому что знает, как перезагрузить свою жизнь! 😄💻
Системный администратор на вечеринке: «У меня есть три состояния — рабочее, загруженное и не отвечаю. Вы находитесь в третьем!» 😄💻
Системный администратор заходит в кафе и говорит: "У вас есть Wi-Fi?" Бариста отвечает: "Да, конечно!" Администратор отвечает: "Отлично, я просто проверю, не упал ли ваш сервер!"
Пока, как я понимаю, юмористы могут спать спокойно. ИИ их не заменит в ближайшее время. А вот переводчикам я бы не позавидовал. Давно уже почти всё читаю и смотрю в автоматическом переводе. Качество среднего текста или видео вполне достойное для нормального восприятия смысла.
#юмор
Придумай шутку про системного администратора.
Вот наиболее прикольные ответы:
- Почему системный администратор всегда спит спокойно?
- Потому что у него всегда есть резервная копия!
- Почему системный администратор никогда не теряет ключи?
- Потому что у него всегда есть бэкапы! 🔑💻🤣
- Почему системный администратор никогда не делает зарядку?
- Потому что ему всегда достаточно просто перезагрузить систему! 😄💻🔄
- Почему системный администратор всегда спокоен?
- Потому что он знает, что если что-то пойдет не так, у него всегда есть "план восстановления"!
Почему-то все шутки получались очень похожими, хотя я использовал разные модели. Когда надоело видеть шутки с "почему", стал спрашивать по-другому:
Придумай шутку про системного администратора без вопроса "почему".
Системный администратор — это человек, который знает, где хранятся все данные, но не помнит, где положил ключи от машины.
Системный администратор заходит в бар, заказывает пиво и говорит: "Надеюсь, у вас есть резервная копия этого напитка!"
- Зачем системный администратор всегда носит с собой лестницу?
- Чтобы подняться на новый уровень безопасности! 😄🔧
Системный администратор так любит свою работу, что даже на отдыхе обсуждает проблемы с маршрутизатором... с местным Wi-Fi! 😄
👆 Вот это было ничего 😂
Системный администратор заходит в аптеку и говорит: "Мне, пожалуйста, что-то от усталости. И чтобы не требовало перезагрузки!"
Почему системный администратор всегда в хорошем настроении? Потому что знает, как перезагрузить свою жизнь! 😄💻
Системный администратор на вечеринке: «У меня есть три состояния — рабочее, загруженное и не отвечаю. Вы находитесь в третьем!» 😄💻
Системный администратор заходит в кафе и говорит: "У вас есть Wi-Fi?" Бариста отвечает: "Да, конечно!" Администратор отвечает: "Отлично, я просто проверю, не упал ли ваш сервер!"
Пока, как я понимаю, юмористы могут спать спокойно. ИИ их не заменит в ближайшее время. А вот переводчикам я бы не позавидовал. Давно уже почти всё читаю и смотрю в автоматическом переводе. Качество среднего текста или видео вполне достойное для нормального восприятия смысла.
#юмор
🎓 В закладках около года лежала ссылка на плейлист из 14 лекций по SRE на канале T-образование от известного теперь уже T-банка. Решил его “посмотреть”. Понятно, что весь его просмотреть надо много времени. Комментарии к видео по непонятной причине закрыты, что навеяло на мысли о том, что там какая-то ерунда. Чтобы составить своё представление о том, что это, пришлось на скорости x2 прослушать первые две лекции.
Сначала было разочарование, потому что показалось не очень интересным, так как одни слова, никакой конкретики по технологиям и инструментам. То, к чему я сам привык в обучающих видео. Полистал остальной канал и по теме системного администрирования или devops ничего не нашёл. Хотя там много обучающего материала, но в основном для школьников 10-11 классов.
Начал закрывать вкладки с канала и уже в конце заметил название плейлиста: Лекторий по SRE. Тут я понял свою ошибку. Никто и не обещал обучающий курс. Это просто лекции по теме. Потом уже ещё раз пробежался по списку лекций и понял, что зря я его решил убрать в сторону. По теме SRE не так много структурированной информации на русском языке. А лекции эти были записаны в рамках бесплатного курса для опытных DevOps-инженеров и начинающих SRE-специалистов, который уже закрыт.
Так что если вам интересна тема SRE, вы занимаетесь самообразованием, или просто хотите быть в курсе современных направлений в IT, можете послушать эти лекции. Их не обязательно смотреть, можно именно слушать в машине или во время прогулок. Читает лекции Дмитрий Масленников — руководитель центра SRE в Т‑Банке.
▶️ Лекторий по SRE
Не забываем забирать в закладки. Видите, как бывает. Год прошёл, а я не забросил. Все свои списки так или иначе перебираю, хотя новой информации тоже вал идёт.
#обучение
Сначала было разочарование, потому что показалось не очень интересным, так как одни слова, никакой конкретики по технологиям и инструментам. То, к чему я сам привык в обучающих видео. Полистал остальной канал и по теме системного администрирования или devops ничего не нашёл. Хотя там много обучающего материала, но в основном для школьников 10-11 классов.
Начал закрывать вкладки с канала и уже в конце заметил название плейлиста: Лекторий по SRE. Тут я понял свою ошибку. Никто и не обещал обучающий курс. Это просто лекции по теме. Потом уже ещё раз пробежался по списку лекций и понял, что зря я его решил убрать в сторону. По теме SRE не так много структурированной информации на русском языке. А лекции эти были записаны в рамках бесплатного курса для опытных DevOps-инженеров и начинающих SRE-специалистов, который уже закрыт.
Так что если вам интересна тема SRE, вы занимаетесь самообразованием, или просто хотите быть в курсе современных направлений в IT, можете послушать эти лекции. Их не обязательно смотреть, можно именно слушать в машине или во время прогулок. Читает лекции Дмитрий Масленников — руководитель центра SRE в Т‑Банке.
Не забываем забирать в закладки. Видите, как бывает. Год прошёл, а я не забросил. Все свои списки так или иначе перебираю, хотя новой информации тоже вал идёт.
#обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
Набираем ИТ специалистов (полная занятость)
У нас растущий стартап с задачами:
1️⃣ Создание и разработка приложения для автоматизации ведения отчетов предприятий РФ в пищевой промышленности, построение сетевой инфраструктуры и контроля в данных предприятиях с целью обеспечения безопасности.
2️⃣ Создание и разработка ИТ решения для системы поиска и контроля персонала пищевых (и не только) предприятий, включая работу системы видеонаблюдения, нейро аналитики, СКУД.
❗️Мы ищем как людей с опытом в своей области, так и новичков, стремящихся расти и развиваться работая в команде с профессионалами. На данный момент требуются:
🔹Специалист пусконаладки и настройки сложных систем видеонаблюдения и аналитики, СКУД, слаботочных систем, проектирования архитектуры безопасности предприятий и объектов.
- Опыт работы с компьютерами и серверами на уровне сборки и установки операционной системы
- Умение работать с сетевым оборудованием и понимание основ сетевой безопасности
- Навыки диагностики и устранения неисправностей аппаратного и программного обеспечения
- Приветствуется опыт работы с ПО DSSL Trasir, Xeoma и другими специализированными решениями в области сетевого видеонаблюдения
Желание учиться и развиваться, следить за новыми технологиями в области ИТ-инфраструктуры
Оба проекта новые и интересные. Мы гарантируем гибкий подход, прекрасный коллектив и достойную оплату по результатам собеседования. ЗП вилка 100 - 150 тыс рублей + премии. Официальное оформление. Мы рады приветствовать новых специалистов, профессионалов и начинающие таланты.
За подробностями пишите в телеграмм @Q_Standard
⇨ https://q-standard.com
У нас растущий стартап с задачами:
1️⃣ Создание и разработка приложения для автоматизации ведения отчетов предприятий РФ в пищевой промышленности, построение сетевой инфраструктуры и контроля в данных предприятиях с целью обеспечения безопасности.
2️⃣ Создание и разработка ИТ решения для системы поиска и контроля персонала пищевых (и не только) предприятий, включая работу системы видеонаблюдения, нейро аналитики, СКУД.
❗️Мы ищем как людей с опытом в своей области, так и новичков, стремящихся расти и развиваться работая в команде с профессионалами. На данный момент требуются:
🔹Специалист пусконаладки и настройки сложных систем видеонаблюдения и аналитики, СКУД, слаботочных систем, проектирования архитектуры безопасности предприятий и объектов.
- Опыт работы с компьютерами и серверами на уровне сборки и установки операционной системы
- Умение работать с сетевым оборудованием и понимание основ сетевой безопасности
- Навыки диагностики и устранения неисправностей аппаратного и программного обеспечения
- Приветствуется опыт работы с ПО DSSL Trasir, Xeoma и другими специализированными решениями в области сетевого видеонаблюдения
Желание учиться и развиваться, следить за новыми технологиями в области ИТ-инфраструктуры
Оба проекта новые и интересные. Мы гарантируем гибкий подход, прекрасный коллектив и достойную оплату по результатам собеседования. ЗП вилка 100 - 150 тыс рублей + премии. Официальное оформление. Мы рады приветствовать новых специалистов, профессионалов и начинающие таланты.
За подробностями пишите в телеграмм @Q_Standard
⇨ https://q-standard.com
Q-Standard
Quality Standard - цифровые решения для вашего производства
Q-VISION - новый уровень контроля на любом предприятии.
Q-CHECK - одно приложение вместо десятков журналов.
Консалтинговые услуги в области управления качеством и контроля безопасности пищевых производств.
Проводим корпоративное и индивидуальное обучение.
Q-CHECK - одно приложение вместо десятков журналов.
Консалтинговые услуги в области управления качеством и контроля безопасности пищевых производств.
Проводим корпоративное и индивидуальное обучение.
При обновлении кода сайта или веб сервиса легко сделать проверку изменений или выполнить откат в случае каких-то проблем. Задача сильно усложняется, когда обновление затрагивает изменение в структуре базы данных. Если вы накатили изменение, которое затрагивает базу данных, не получится просто откатить всё назад на уровне кода. Нужно откатывать и состояние базы. Для таких ситуация придумали миграции базы данных.
Сразу покажу на примере, как это работает. Существует популярная open source утилита для этих целей - migrate. Она поддерживает все наиболее распространённые СУБД. Миграции можно выполнять с помощью готовой библиотеки на Go, либо в консоли через CLI. Я буду использовать CLI, СУБД PostgreSQL и ОС Debian 12.
Для Migrate собран deb пакет, хотя по своей сути это одиночный бинарник. Можно скачать только его. Для порядка ставим из пакета, который берём в репозитории:
Для удобства добавим строку на подключение к локальной базе данных в переменную:
Я подключаюсь без ssl к базе данных test_migrations под учёткой postgres с паролем pass123. С рабочей базой так делать не надо, чтобы пароль не улетел в history.
Принцип работы migrate в том, что создаются 2 файла с sql командами. Первый файл выполняется, когда мы применяем обновление, а второй - когда мы откатываем. В своём примере я добавлю таблицу test01 с простой структурой, а потом удалю её в случае отката.
В директории были созданы 2 файла. В первый файл с up в имени добавим sql код создания таблицы test01:
А во второй с down - удаление:
Проверим, как это работает:
Смотрим, появилась ли таблица:
Вы должны увидеть структуру таблицы test01. Теперь откатим наше изменение:
Проверяем:
Таблицы нет. Принцип тут простой - пишем SQL код, который исполняем. На деле, конечно, изменения бывают сложные, особенно когда не добавляются или удаляются таблицы, а меняется структура существующих таблиц с данными. Инструменты типа migrate позволяют описать все изменения и проработать процесс обновления/отката в тестовых средах. В простых случаях можно обойтись и своими bash скриптами, но migrate упрощает эту задачу, так как, во-первых поддерживает множество СУБД. Во-вторых, автоматически нумерует миграции и исполняет последовательно. В-третьих, может, к примеру, забирать миграции напрямую из git репозитория.
Для каждой СУБД в репозитории Migrate есть примеры настройки миграций.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
⇨ Исходники
#postgresql #mysql
Сразу покажу на примере, как это работает. Существует популярная open source утилита для этих целей - migrate. Она поддерживает все наиболее распространённые СУБД. Миграции можно выполнять с помощью готовой библиотеки на Go, либо в консоли через CLI. Я буду использовать CLI, СУБД PostgreSQL и ОС Debian 12.
Для Migrate собран deb пакет, хотя по своей сути это одиночный бинарник. Можно скачать только его. Для порядка ставим из пакета, который берём в репозитории:
# wget https://github.com/golang-migrate/migrate/releases/download/v4.18.1/migrate.linux-amd64.deb
# dpkg -i migrate.linux-amd64.deb
Для удобства добавим строку на подключение к локальной базе данных в переменную:
# export POSTGRESQL_URL='postgres://postgres:pass123@localhost:5432/test_migrations?sslmode=disable'
Я подключаюсь без ssl к базе данных test_migrations под учёткой postgres с паролем pass123. С рабочей базой так делать не надо, чтобы пароль не улетел в history.
Принцип работы migrate в том, что создаются 2 файла с sql командами. Первый файл выполняется, когда мы применяем обновление, а второй - когда мы откатываем. В своём примере я добавлю таблицу test01 с простой структурой, а потом удалю её в случае отката.
# cd ~ && mkdir migrations
# migrate create -ext sql -dir migrations -seq create_test01_table
~/migrations/000001_create_test01_table.up.sql
~/migrations/000001_create_test01_table.down.sql
В директории были созданы 2 файла. В первый файл с up в имени добавим sql код создания таблицы test01:
CREATE TABLE IF NOT EXISTS test01(
user_id serial PRIMARY KEY,
username VARCHAR (50) UNIQUE NOT NULL,
password VARCHAR (50) NOT NULL,
email VARCHAR (300) UNIQUE NOT NULL
);
А во второй с down - удаление:
DROP TABLE IF EXISTS test01;
Проверим, как это работает:
# migrate -database ${POSTGRESQL_URL} -path migrations up
1/u create_test01_table (24.160815ms)
Смотрим, появилась ли таблица:
# psql ${POSTGRESQL_URL} -c "\d test01"
Вы должны увидеть структуру таблицы test01. Теперь откатим наше изменение:
# migrate -database ${POSTGRESQL_URL} -path migrations down
Are you sure you want to apply all down migrations? [y/N]
y
Applying all down migrations
1/d create_test01_table (15.851045ms)
Проверяем:
# psql ${POSTGRESQL_URL} -c "\d test01"
Did not find any relation named "test01".
Таблицы нет. Принцип тут простой - пишем SQL код, который исполняем. На деле, конечно, изменения бывают сложные, особенно когда не добавляются или удаляются таблицы, а меняется структура существующих таблиц с данными. Инструменты типа migrate позволяют описать все изменения и проработать процесс обновления/отката в тестовых средах. В простых случаях можно обойтись и своими bash скриптами, но migrate упрощает эту задачу, так как, во-первых поддерживает множество СУБД. Во-вторых, автоматически нумерует миграции и исполняет последовательно. В-третьих, может, к примеру, забирать миграции напрямую из git репозитория.
Для каждой СУБД в репозитории Migrate есть примеры настройки миграций.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
⇨ Исходники
#postgresql #mysql
Провозился вчера некоторое время над банальной задачей. Нужно было добавить нового пользователя в mysql базу через консольный клиент. Задача простая, но я реально запутался в версиях mysql и используемых плагинах аутентификации. У меня была версия Mariadb 10.11, нужна была аутентификация по сети по паролю, а не через сокет.
Открыл свою шпаргалку, нашёл команду:
Не работает. Сначала пробовал разные варианты, потом вспомнил, что ALTER меняет пароль у существующего пользователя, а мне нужно создать нового. Немного погуглил, нашёл, как создать пользователя, использующего пароль:
Нормально, пользователя создал. Пробую ещё раз первую команду, чтобы задать пароль:
Опять не работает. Перебираю разные варианты и нахожу рабочий:
Честно говоря не понял, почему мой исходный вариант не сработал. Раньше точно работал, сейчас перестал. С MySQL в этом плане сейчас геморно стало. Проще сразу поставить adminer или phpmyadmin. Из-за того, что у mysql появилось несколько форков, плюс разные плагины аутентификации: unix_socket и mysql_native_password, комбинации команд по управлению пользователями стали отличаться в разных версиях. Это создаёт неудобства и только тратит время на поиск работающего варианта.
Я в основном с MariaDB работаю. Вот небольшая шпаргалка для консольного клиента этой СУБД.
📌 Первичная настройка сразу после установки, где можно выбрать тип плагин для аутентификации и задать пароль root:
📌 Создание базы данных:
📌 Создание пользователя с паролем:
📌 Назначаем пользователю права на базу данных (полные и выборочные):
📌 Список пользователей и их прав:
📌 Загрузить дамп в базу zabbix:
или
📌 Удалить базу:
📌 Список активных соединений:
📌 Посмотреть значение конкретного параметра (innodb_buffer_pool_size):
📌 Изменение параметра (max_connections):
Эти команды покрывают 95% моих задач, которые приходится выполнять в консольном клиенте mysql. Есть ещё несколько, касающихся репликации, но это отдельная тема.
Напоминаю, что у меня есть публикация с подборкой заметок по теме MySQL сервера. Там затрагиваются вопросы настройки, мониторинга, бэкапа и эксплуатации сервера MySQL.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mysql
Открыл свою шпаргалку, нашёл команду:
> ALTER USER 'zbx_monitor'@'10.30.52.9' IDENTIFIED WITH mysql_native_password BY 'XkRy1bRRgLIB';
ERROR 1064 (42000): You have an error in your SQL syntax;
Не работает. Сначала пробовал разные варианты, потом вспомнил, что ALTER меняет пароль у существующего пользователя, а мне нужно создать нового. Немного погуглил, нашёл, как создать пользователя, использующего пароль:
> CREATE USER 'zbx_monitor'@'10.30.52.9' IDENTIFIED VIA mysql_native_password;
Query OK, 0 rows affected (0.075 sec)
Нормально, пользователя создал. Пробую ещё раз первую команду, чтобы задать пароль:
> ALTER USER 'zbx_monitor'@'10.30.52.9' IDENTIFIED WITH mysql_native_password BY 'XkRy1bRRgLIB';
ERROR 1064 (42000): You have an error in your SQL syntax;
Опять не работает. Перебираю разные варианты и нахожу рабочий:
> ALTER USER 'zbx_monitor'@'10.30.52.9' IDENTIFIED BY 'XkRy1bRRgLIB';
Query OK, 0 rows affected (0.114 sec)
Честно говоря не понял, почему мой исходный вариант не сработал. Раньше точно работал, сейчас перестал. С MySQL в этом плане сейчас геморно стало. Проще сразу поставить adminer или phpmyadmin. Из-за того, что у mysql появилось несколько форков, плюс разные плагины аутентификации: unix_socket и mysql_native_password, комбинации команд по управлению пользователями стали отличаться в разных версиях. Это создаёт неудобства и только тратит время на поиск работающего варианта.
Я в основном с MariaDB работаю. Вот небольшая шпаргалка для консольного клиента этой СУБД.
📌 Первичная настройка сразу после установки, где можно выбрать тип плагин для аутентификации и задать пароль root:
# mysql_secure_installation
📌 Создание базы данных:
> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
📌 Создание пользователя с паролем:
> CREATE USER 'zabbix'@'10.30.52.9' IDENTIFIED VIA mysql_native_password;
> ALTER USER 'zabbix'@'10.30.52.9' IDENTIFIED BY 'PassWORD123';
📌 Назначаем пользователю права на базу данных (полные и выборочные):
> GRANT ALL PRIVILEGES on zabbix.* to 'zabbix'@'10.30.52.9';
> GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'10.30.52.9';
📌 Список пользователей и их прав:
> SELECT user,authentication_string,plugin,host FROM mysql.user;
📌 Загрузить дамп в базу zabbix:
> USE zabbix;
> SOURCE my_dump.sql;
или
> \. my_dump.sql;
📌 Удалить базу:
> DROP DATABASE zabbix;
📌 Список активных соединений:
> SHOW FULL PROCESSLIST;
📌 Посмотреть значение конкретного параметра (innodb_buffer_pool_size):
> SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
📌 Изменение параметра (max_connections):
> SET GLOBAL max_connections = 200;
Эти команды покрывают 95% моих задач, которые приходится выполнять в консольном клиенте mysql. Есть ещё несколько, касающихся репликации, но это отдельная тема.
Напоминаю, что у меня есть публикация с подборкой заметок по теме MySQL сервера. Там затрагиваются вопросы настройки, мониторинга, бэкапа и эксплуатации сервера MySQL.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mysql
Если у вас есть большой 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
Посмотрел очень интересное видео про снижение задержек в 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
На неделе возникла небольшая задача по публикации баз 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.