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
Если у вас используется несколько систем мониторинга, сразу возникает задача по централизованному управлению оповещениями. А в мониторинге это самое главное. Я развернул и потестировал open source платформу keephq для объединения и обработки оповещений из различных систем, которые их генерируют. Например, это могут быть такие популярные системы, как:
- Zabbix
- Prometheus/VictoriaMetrics
- Netdata
- UptimeKuma
- Checkmk
- Elastic/Graylog
И многие другие известные системы. Сразу по шагам покажу, как keephq настраивается, чтобы было понятно, что она из себя представляет. Я потестировал её в связке с Zabbix.
1️⃣ Установка очень простая:
В docker-compose.common.yml поменял переменные
Так мы запустили службу с сохранением состояния в базе sqlite3 в директории state.
2️⃣ Зашёл в веб интерфейс по IP адресу на порт 3000. Сразу добавил провайдера Zabbix. Для этого нужен его URL, и API токен для доступа к мониторингу. Предварительно создал его.
3️⃣ Keephq подгрузил активные триггеры из Zabbix. Сразу же можно сделать и сохранить отдельное представление, для отображения триггеров только с этого провайдера. Для триггеров можно настроить какие-то действия, которые можно выбирать для ручного запуска. Например, создать тикет в Jira, Redmine, Gitlab и т.д.
4️⃣ В разделе Correlations создал новое правило, в котором при появлении нового триггера создаётся инцидент. Он, когда сработает, будет виден в разделе Incidents. В инциденты могут быть объединены триггеры с различными признаками.
5️⃣ На основе инцидента в ручном или автоматическом режиме могут выполняться различные действия. Они описываются в разделе Workflows. Самый простой пример действия - добавление в качестве провайдера какой-то сервер с доступом к нему по SSH. И в качестве реакции на инцидент на этом сервере можно запускать какую-то команду или скрипт.
Описал кратко принцип работы keephq. В общем случае эта система умеет аккумулировать в себе множество событий и выдавать на них какие-то реакции со своими действиями или оповещениями.
Например, у вас случился какой-то шторм из алертов из-за того, что поленились настроить в Zabbix зависимость триггеров. Упал какой-то удалённый филиал и все хосты оттуда навалили кучу триггеров. Вы можете в keephq объединить все эти триггеры по какому-то признаку, сделать на их основе инцидент, отправить только одно уведомление ответственному лицу, а инцидент закрыть после закрытия какой-то конкретного триггера в Zabbix, который, к примеру, отвечает за доступность шлюза в удалённом филиале.
Описал простой пример, который связан только с одним сервером Zabbix. Соответственно, если у вас много различных серверов, которые генерируют события, их можно объединять в keephq. Отключать отправку уведомлений в самих сервисах и управлять ими в keephq.
Надеюсь, понятно объяснил. По сути это аналог Grafana OnCall. А сооснователь keephq - Матвей Кукуй, в прошлом — Engineering Director в Grafana Labs, который OnCall и создавал. А до этого он же ex-CEO Amixr.IO, который купила Grafana. Вот интервью с ним.
Keephq монетизируется и развивается за счёт облачной версии. Open Source версия для собственной установки бесплатна. Каких-то ограничений не нашёл.
⇨ 🌐 Сайт / Исходники
#devops #мониторинг
- Zabbix
- Prometheus/VictoriaMetrics
- Netdata
- UptimeKuma
- Checkmk
- Elastic/Graylog
И многие другие известные системы. Сразу по шагам покажу, как keephq настраивается, чтобы было понятно, что она из себя представляет. Я потестировал её в связке с Zabbix.
1️⃣ Установка очень простая:
# git clone https://github.com/keephq/keep.git && cd keep
# mkdir -p state && chown -R 999:999 state
В docker-compose.common.yml поменял переменные
NEXTAUTH_URL
и NEXT_PUBLIC_API_URL
на свои IP и запустил:# docker compose up -d
Так мы запустили службу с сохранением состояния в базе sqlite3 в директории state.
2️⃣ Зашёл в веб интерфейс по IP адресу на порт 3000. Сразу добавил провайдера Zabbix. Для этого нужен его URL, и API токен для доступа к мониторингу. Предварительно создал его.
3️⃣ Keephq подгрузил активные триггеры из Zabbix. Сразу же можно сделать и сохранить отдельное представление, для отображения триггеров только с этого провайдера. Для триггеров можно настроить какие-то действия, которые можно выбирать для ручного запуска. Например, создать тикет в Jira, Redmine, Gitlab и т.д.
4️⃣ В разделе Correlations создал новое правило, в котором при появлении нового триггера создаётся инцидент. Он, когда сработает, будет виден в разделе Incidents. В инциденты могут быть объединены триггеры с различными признаками.
5️⃣ На основе инцидента в ручном или автоматическом режиме могут выполняться различные действия. Они описываются в разделе Workflows. Самый простой пример действия - добавление в качестве провайдера какой-то сервер с доступом к нему по SSH. И в качестве реакции на инцидент на этом сервере можно запускать какую-то команду или скрипт.
Описал кратко принцип работы keephq. В общем случае эта система умеет аккумулировать в себе множество событий и выдавать на них какие-то реакции со своими действиями или оповещениями.
Например, у вас случился какой-то шторм из алертов из-за того, что поленились настроить в Zabbix зависимость триггеров. Упал какой-то удалённый филиал и все хосты оттуда навалили кучу триггеров. Вы можете в keephq объединить все эти триггеры по какому-то признаку, сделать на их основе инцидент, отправить только одно уведомление ответственному лицу, а инцидент закрыть после закрытия какой-то конкретного триггера в Zabbix, который, к примеру, отвечает за доступность шлюза в удалённом филиале.
Описал простой пример, который связан только с одним сервером Zabbix. Соответственно, если у вас много различных серверов, которые генерируют события, их можно объединять в keephq. Отключать отправку уведомлений в самих сервисах и управлять ими в keephq.
Надеюсь, понятно объяснил. По сути это аналог Grafana OnCall. А сооснователь keephq - Матвей Кукуй, в прошлом — Engineering Director в Grafana Labs, который OnCall и создавал. А до этого он же ex-CEO Amixr.IO, который купила Grafana. Вот интервью с ним.
Keephq монетизируется и развивается за счёт облачной версии. Open Source версия для собственной установки бесплатна. Каких-то ограничений не нашёл.
⇨ 🌐 Сайт / Исходники
#devops #мониторинг
3👍113👎4
Максимально простой способ запустить ОС Android на обычном PC на базе ОС Linux. Я уже не раз касался этой темы на канале, но все способы были значительно сложнее того, о чём расскажу сейчас.
Есть проект redroid (Remote anDroid), который запускает Android в Docker контейнере на базе Ubuntu. Поддерживаются версии Android 8.1 - 15.
Для подключения нужно использовать scrcpy, рассказывал про неё. В самих образах уже всё настроено, поэтому достаточно просто скачать программу и запустить:
Где 10.20.1.4 - IP системы, на которой запущен контейнер. Scrcpy очень простая и удобная штука. Я её использую в винде и для подключения к реальным смартфонам в пределах локальной сети. Работает отлично, можно спокойно в игры играть. Отклик хороший. У неё есть дополнение - QtScrcpy, в ней есть GUI.
⇨ 🌐 Исходники
Другие способы запуска системы Android на PC:
▪️Bliss-OS - операционная система на базе Android, которую можно установить на компьютер или ноутбук, а также в виртуальную машину.
▪️Android-x86 - порт системы на x86 архитектуру. Проект мёртв, больше не развивается, но старые версии андроида работают.
▪️Memuplay - эмулятор Android под Windows. Можно спокойно в игры играть.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#android
Есть проект redroid (Remote anDroid), который запускает Android в Docker контейнере на базе Ubuntu. Поддерживаются версии Android 8.1 - 15.
# apt install linux-modules-extra-`uname -r`
# modprobe binder_linux devices="binder,hwbinder,vndbinder"
# modprobe ashmem_linux
# docker run -itd --privileged \
-v ~/data:/data \
-p 5555:5555 \
redroid/redroid:15.0.0-latest
Для подключения нужно использовать scrcpy, рассказывал про неё. В самих образах уже всё настроено, поэтому достаточно просто скачать программу и запустить:
> scrcpy.exe --tcpip=10.20.1.4
Где 10.20.1.4 - IP системы, на которой запущен контейнер. Scrcpy очень простая и удобная штука. Я её использую в винде и для подключения к реальным смартфонам в пределах локальной сети. Работает отлично, можно спокойно в игры играть. Отклик хороший. У неё есть дополнение - QtScrcpy, в ней есть GUI.
⇨ 🌐 Исходники
Другие способы запуска системы Android на PC:
▪️Bliss-OS - операционная система на базе Android, которую можно установить на компьютер или ноутбук, а также в виртуальную машину.
▪️Android-x86 - порт системы на x86 архитектуру. Проект мёртв, больше не развивается, но старые версии андроида работают.
▪️Memuplay - эмулятор Android под Windows. Можно спокойно в игры играть.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#android
👍143👎5
В комментариях один подписчик поделился open source проектом в виде сервера для управления и использования скриптов - script-server. Штука вроде интересная. Я развернул и начал тестировать. Но всё как-то неинтуитивно и неудобно. В процессе я понял, что уже видел на эту тему готовые продукты, но более функциональные и проработанные. В итоге бросил script-server, вспомнил аналог, которым я когда-то давно пользовался - Rundeck. Решил написать про него.
Кратко скажу, что такое Rundeck. Это веб интерфейс для управления своими костылями в виде различных скриптов. Их можно запускать как вручную, так и по расписанию, заменяя локальные cron на отдельных узлах. Вы добавляете в систему свои сервера, пишите скрипты и связываете эти скрипты с серверами. Это альтернатива крупным CI/CD системам для тех, кому они не нужны, но хочется как-то упорядочить управление своими костылями в небольшой инфраструктуре.
📌 Основные возможности Rundeck:
🔹Запуск составных заданий, которые могут состоять из локальных команд и скриптов, скриптов из централизованного хранилища, HTTP запросов, Ansible плейбуков, задач на копирование файлов.
🔹Задания могут запускаться вручную через веб интерфейс или по расписанию.
🔹Выполнение заданий логируется, после выполнения могут отправляться уведомления.
🔹Функциональность системы расширяется плагинами и интеграциями. Например, можно запускать задачи Rundeck после билдов в Jenkins, или добавлять результат работы команды в комментарии в задачам в Jira. Список плагинов большой.
🔹Различные планы исполнения массовых заданий: последовательные, параллельные сразу на всех хостах, остановка или продолжение исполнения в случае неудач и т.д.
🔹Управление правами доступа в проектах на основе групп и ролей.
🔹На Linux сервера ходит по SSH, на виндовые через WinRM.
Продукт уже зрелый и развитый. Настолько развитый, что загрузку Community версии спрятали за форму регистрации. Я знаю, что есть Docker версия, поэтому просто сходил в hub, посмотрел номер свежего релиза и запустил его:
Можно идти по IP адресу на порт 4440, учётка по умолчанию - admin / admin. Интерфейс и логика работы интуитивно понятны. Создаём job с различными параметрами, добавляем хосты (делается в настройках проекта), настраиваем запуск заданий на хостах. Есть несколько механизмов по автоматическому добавлению хостов. Rundesk их может брать из:
◽️Ansible inventory
◽️Директории, где лежат подготовленные файлы с описанием хостов
◽️Единого конфига, где описаны все хосты
Соответственно, хосты он подгружает из заранее подготовленного места. Пример файла с описанием нод есть в документации. Там всё просто. Надо заполнить основные поля - имя, адрес, архитектура, система, тэги и т.д. То ли я затупил, то ли такую возможность убрали из бесплатной версии. Не понял, как одну ноду вручную добавить в веб интерфейс. Каждый раз редактировать файл неудобно.
В качестве примеров можете посмотреть готовые задания из репозитория. Они в формате yml. Можете скачать и импортировать к себе.
Я пару часов поразбирался с этой системой, в целом, всё получилось, но есть нюансы. Последовательность действий такая:
1️⃣ Добавляем проект.
2️⃣ В свойствах проекта в разделе Default Node Executor указываем SSH Authentication privateKey.
3️⃣ Идём в Key Storage, добавляем ключ. Сохраняем его Storage path.
4️⃣ Готовим файл с нодами
5️⃣ Копируем этот файл в контейнер:
6️⃣ В разделе Edit Nodes добавляем Node Source в виде File. Путь указываем
Всё, теперь можно создавать задания и выполнять их на нодах.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#script #devops
Кратко скажу, что такое Rundeck. Это веб интерфейс для управления своими костылями в виде различных скриптов. Их можно запускать как вручную, так и по расписанию, заменяя локальные cron на отдельных узлах. Вы добавляете в систему свои сервера, пишите скрипты и связываете эти скрипты с серверами. Это альтернатива крупным CI/CD системам для тех, кому они не нужны, но хочется как-то упорядочить управление своими костылями в небольшой инфраструктуре.
📌 Основные возможности Rundeck:
🔹Запуск составных заданий, которые могут состоять из локальных команд и скриптов, скриптов из централизованного хранилища, HTTP запросов, Ansible плейбуков, задач на копирование файлов.
🔹Задания могут запускаться вручную через веб интерфейс или по расписанию.
🔹Выполнение заданий логируется, после выполнения могут отправляться уведомления.
🔹Функциональность системы расширяется плагинами и интеграциями. Например, можно запускать задачи Rundeck после билдов в Jenkins, или добавлять результат работы команды в комментарии в задачам в Jira. Список плагинов большой.
🔹Различные планы исполнения массовых заданий: последовательные, параллельные сразу на всех хостах, остановка или продолжение исполнения в случае неудач и т.д.
🔹Управление правами доступа в проектах на основе групп и ролей.
🔹На Linux сервера ходит по SSH, на виндовые через WinRM.
Продукт уже зрелый и развитый. Настолько развитый, что загрузку Community версии спрятали за форму регистрации. Я знаю, что есть Docker версия, поэтому просто сходил в hub, посмотрел номер свежего релиза и запустил его:
# docker run --name rundeck -e RUNDECK_GRAILS_URL=https://10.20.1.36:4440 -p 4440:4440 -v data:/home/rundeck/server/data rundeck/rundeck:5.7.0
Можно идти по IP адресу на порт 4440, учётка по умолчанию - admin / admin. Интерфейс и логика работы интуитивно понятны. Создаём job с различными параметрами, добавляем хосты (делается в настройках проекта), настраиваем запуск заданий на хостах. Есть несколько механизмов по автоматическому добавлению хостов. Rundesk их может брать из:
◽️Ansible inventory
◽️Директории, где лежат подготовленные файлы с описанием хостов
◽️Единого конфига, где описаны все хосты
Соответственно, хосты он подгружает из заранее подготовленного места. Пример файла с описанием нод есть в документации. Там всё просто. Надо заполнить основные поля - имя, адрес, архитектура, система, тэги и т.д. То ли я затупил, то ли такую возможность убрали из бесплатной версии. Не понял, как одну ноду вручную добавить в веб интерфейс. Каждый раз редактировать файл неудобно.
В качестве примеров можете посмотреть готовые задания из репозитория. Они в формате yml. Можете скачать и импортировать к себе.
Я пару часов поразбирался с этой системой, в целом, всё получилось, но есть нюансы. Последовательность действий такая:
resources.yml
. Описываем там ноды, в параметре ssh-key-storage-path указываем Storage path из предыдущего пункта.# docker cp ~/resources.yml rundeck:/home/rundeck/resources.yml
/home/rundeck/resources.yml
. Сохраняем настройку. Всё, теперь можно создавать задания и выполнять их на нодах.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#script #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍103👎6
В сентябре делал подборку бесплатных программ для инвентаризации и учета оборудования и программного обеспечения. В комментариях читатель посоветовал программу Open-AudIT, про которую я ранее не слышал. Решил развернуть её у себя и посмотреть, чтобы дополнить список.
Программа в целом понравилась. Сразу назову основные особенности:
🔹Написана на PHP, использует MySQL. Работает на стандартном стеке веб сервера. Есть единый установщик под Linux и под Windows. Устанавливается полностью автоматически.
🔹Принцип работы очень простой. Сразу после установки указываете учётные данные для подключения к Linux и Windows хостам. Система сама сканирует выбранный диапазон сети, находит хосты, подключается к ним и собирает информацию.
🔹Сбор информации происходит через запуск bash или vbs скриптов, сетевые устройства опрашивает по snmp. Скрипты можно самому запускать любым доступным способом. Например, через GPO для Windows.
🔹У системы есть несколько лицензий. Community - бесплатная, самая простая, есть существенные ограничения по функциональности, но не по хостам. Работает сразу, ничего получать не надо. Есть лицензия Free, которая сразу даётся на год на 100 хостов. Тоже без каких-то особых телодвижений. Надо только свою почту указать, лицензия автоматом применяется.
Open-AudIT максимально проста в установке и настройке базовой функциональности. Я разобрался сходу, в документацию даже не заглядывал. Сделал следующее:
1️⃣ Скачал установщик под Linux.
2️⃣ Сделал его исполняемым и запустил. Автоматом установились необходимые пакеты для Debian - apache2, mysql, php и т.д. Все конфиги с исходниками тоже. Ничего самому настраивать не пришлось. Под винду установщик такой же.
3️⃣ Зашёл в веб интерфейс. Учётка - admin / password. Сразу предложили указать учётки хостов и диапазон IP для сканирования.
4️⃣ Запустил правило обнаружения. Процесс нашёл доступные хосты, зашёл на них и забрал информацию о ПО, железе, службах и т.д.
5️⃣ Открыл список хостов и посмотрел собранную информацию.
В целом продукт неплохой. Для тех, кому не хочется заморачиваться и настраивать какие-то расширенные возможности, бесплатной версии будет достаточно. Чуть позже я повнимательнее посмотрел на возможности после активации временной лицензии, почитал документацию. Программа навороченная. Там очень много возможностей, но всё это в платной версии.
Понравился набор информации, которую собирает программа даже в бесплатной версии. Там чего только нет:
◽️Всё железо
◽️Информация об ОС
◽️Службы и приложения
◽️Системные логи
◽️Сетевые настройки, открытые порты, IP адреса, маршруты
◽️Пользователи и группы
◽️Даже список сертификатов из /etc/ssl/certs есть.
◽️На Proxmox собрал в том числе информацию о виртуалках. Сама поняла, что это гипервизор.
Программа явно старая. Внешний вид выдаёт. Так делали интерфейс лет 15 назад. Его освежили, как смогли, но всё равно заметно. Тем не менее, это не брошенный проект. Постоянно дорабатывается, выходят новые версии. Последний релиз был 2024-11-04. Ещё сразу привлекло внимание, что проект упаковали в run файл, а не Docker контейнер. Это выглядит непривычно.
⇨ 🌐 Сайт / ▶️ Установка и обзор
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#управление #ITSM
Программа в целом понравилась. Сразу назову основные особенности:
🔹Написана на PHP, использует MySQL. Работает на стандартном стеке веб сервера. Есть единый установщик под Linux и под Windows. Устанавливается полностью автоматически.
🔹Принцип работы очень простой. Сразу после установки указываете учётные данные для подключения к Linux и Windows хостам. Система сама сканирует выбранный диапазон сети, находит хосты, подключается к ним и собирает информацию.
🔹Сбор информации происходит через запуск bash или vbs скриптов, сетевые устройства опрашивает по snmp. Скрипты можно самому запускать любым доступным способом. Например, через GPO для Windows.
🔹У системы есть несколько лицензий. Community - бесплатная, самая простая, есть существенные ограничения по функциональности, но не по хостам. Работает сразу, ничего получать не надо. Есть лицензия Free, которая сразу даётся на год на 100 хостов. Тоже без каких-то особых телодвижений. Надо только свою почту указать, лицензия автоматом применяется.
Open-AudIT максимально проста в установке и настройке базовой функциональности. Я разобрался сходу, в документацию даже не заглядывал. Сделал следующее:
В целом продукт неплохой. Для тех, кому не хочется заморачиваться и настраивать какие-то расширенные возможности, бесплатной версии будет достаточно. Чуть позже я повнимательнее посмотрел на возможности после активации временной лицензии, почитал документацию. Программа навороченная. Там очень много возможностей, но всё это в платной версии.
Понравился набор информации, которую собирает программа даже в бесплатной версии. Там чего только нет:
◽️Всё железо
◽️Информация об ОС
◽️Службы и приложения
◽️Системные логи
◽️Сетевые настройки, открытые порты, IP адреса, маршруты
◽️Пользователи и группы
◽️Даже список сертификатов из /etc/ssl/certs есть.
◽️На Proxmox собрал в том числе информацию о виртуалках. Сама поняла, что это гипервизор.
Программа явно старая. Внешний вид выдаёт. Так делали интерфейс лет 15 назад. Его освежили, как смогли, но всё равно заметно. Тем не менее, это не брошенный проект. Постоянно дорабатывается, выходят новые версии. Последний релиз был 2024-11-04. Ещё сразу привлекло внимание, что проект упаковали в run файл, а не Docker контейнер. Это выглядит непривычно.
⇨ 🌐 Сайт / ▶️ Установка и обзор
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#управление #ITSM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍130👎3