ServerAdmin.ru
28.8K subscribers
292 photos
34 videos
13 files
2.62K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Напомню для тех, кто не знает. Я на сайте делаю статьи в виде подборок софта, о котором пишу в заметках на этом канале. Во многих случаях это удобнее для поиска и подбора программы, чем поиск тут тэгам.

На днях подготовил очередную подборку по бесплатным HelpDesk системам. Я давно на них делал обзоры, а тема актуальная. Ко мне часто обращаются и просят что-то посоветовать по этой теме.

Топ 10 бесплатных helpdesk систем

Вот ещё несколько подборок, которые я давно сделал и обновляю по мере появления новой информации. Программ там больше, чем изначально заявлено, так как статьи пополняются.

Топ 20 бесплатных систем мониторинга
Топ 12 бесплатных программ для бэкапа
Топ 10 программ для инвентаризации оборудования
Топ 10 бесплатных программ для удалённого доступа

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

#подборка
​​Для тех, кто подбирает сервис для хранения заметок, который можно будет развернуть у себя, советую обратить внимание на проект Notea. Это попытка сделать open source копию Notion. Причём выглядит всё это весьма прилично и функционально.

Запускается Notea в Docker, так что никаких проблем с установкой и настройкой нет. Достаточно запустить и пользоваться. Данные она хранит в S3 хранилищах. Поддерживает бесплатный сервер Minio, который можно запустить тут же, локально, в пару команд.

Запуск Notea в Docker будет выглядеть примерно так:

# docker run -d \
 --name notea \
 -p 3000:3000 \
 -e STORE_ACCESS_KEY=minioadmin\
 -e STORE_SECRET_KEY=minioadmin \
 -e STORE_BUCKET=notea \
 -e STORE_END_POINT=http://localhost:9000 \
 -e STORE_FORCE_PATH_STYLE=true \
 -e PASSWORD=notea \
-e COOKIE_SECURE=false \
cinwell/notea

Minio можете тоже в Docker запустить:
# docker run -p 9000:9000 minio/minio server /data
После этого зайти в веб интерфейс и создать bucket для notea.

Я немного повозился, пока запустил всё это у себя. Предлагаю свой вариант docker-compose.yaml для быстрого запуска чтобы посмотреть на программу. Это именно тестовый запуск, потому что используется сеть host. Для запуска в прод замените её на отдельную сеть и отцепите от host, чтобы не было доступа к minio отовсюду. Забиндите его на localhost, если он только для notea будет.

version: '2'
services:
 notea:
  container_name: notea
  image: cinwell/notea
  ports:
   - '3000:3000'
  depends_on:
   - minio
  environment:
   - STORE_ACCESS_KEY=minio
   - STORE_SECRET_KEY=minio123
   - STORE_BUCKET=notea
   - PASSWORD=notea
   - STORE_END_POINT=http://10.20.1.16:9000
   - STORE_FORCE_PATH_STYLE= true
  restart: unless-stopped
  network_mode: "host"
 minio:
  image: minio/minio
  container_name: notea_minio
  ports:
   - '9000:9000'
   - '9001:9001'
  environment:
   - MINIO_ROOT_USER=minio
   - MINIO_ROOT_PASSWORD=minio123
  command: server /data
  volumes:
   - /mnt/minio:/data
  network_mode: "host"

Запускаем:
# docker-compose up

Идём в веб интерфейс minio http://10.20.1.16:9000 под учёткой minio / minio123, создаём бакет notea. Больше ничего делать не надо. Теперь идём в веб интерфейс notea - http://10.20.1.16:3000, используем указанный пароль notea. Можно тестировать.

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

Мне в целом всё понравилось. Интерфейс приятный и отзывчивый. Работает шустро, выглядит аккуратно: списки, таблицы, картинки, цитаты и т.д. В общем, если подыскиваете себе self-hosted сервис для заметок, обратите на него внимание. Если сравнивать с Trillium Notes, то он более простой, лёгкий, быстрый, минималистичный. И не просит донаты на Ukrainian Army, что сами понимаете, в наше время немаловажный фактор.

Я сам так и остался на Joplin. Мне тупо лень на что-то другое переезжать и тратить своё время. Работает да и ладно. Обновление ноутбука отодвинуло тормоза программы от критического порога моего восприятия. Сейчас бы его не выбрал, если бы подбирал. Хотя стоит отдать ему должное, функционал у него нормальный, но мне не нравятся таблицы в нём и тормозная работа: запускается долго, иногда чуть подвисает, когда его из фона разворачиваешь. Ничего критичного, жить можно, но немного раздражает.

Исходники

#заметки
​​Некоторое время назад полностью решил одну задачу по мониторингу, о которой хочу вам рассказать в общих чертах, чтобы у вас было понимание, какие задачи и как можно решить с помощью Zabbix.

Была задача мониторить состояние платёжных терминалов в распределённой торговой сети. Данные о них можно получать из API сервиса iikko. Основная сложность была в том, что токен для доступа к API выдаётся временный, его нужно постоянно обновлять. Я решил это следующим образом.

Взял обычный bash скрипт в котором получал токен к API iiko, а потом его с помощью API Zabbix сервера записывал в макрос соответствующего шаблона. Выглядит это примерно так:

#!/bin/sh

# Zabbix API token
ZTOKEN=204279d9d06bb9c7df0527107bef8e5d75b0f7e823a8dc6

# Get iiko token
ITOKEN=`curl -sk --location -X POST 'https://api-ru.iiko.services/api/1/access_token' \
-H 'Content-Type: application/json' \
--data-raw '{"apiLogin": "n8457fd4"}' | jq -r '.token'`

# Update macros
curl --location -X POST 'https://zb.server.ru/api_jsonrpc.php' \
-H 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "template.update",
  "params": {
    "templateid": "10630",
    "macros": [
      {"macro": "{$TOKEN}","value": "'$ITOKEN'"},
      {"macro": "{$ID_ORG}","value": ""},
      {"macro": "{$ID_TERM}","value": ""}
    ]
  },
  "id": 1,
  "auth": "'$ZTOKEN'"
}'

Скрипт положил на Zabbix Server и запускал по CRON. Эту же задачу можно было бы решить более красиво через JavaScript сразу в шаблоне Zabbix. Он поддерживает такую обработку в айтеме. Но я не захотел тратить на это время. Если на bash я сразу понимаю, как сделать, то с JavaScript надо разбираться и отлаживать. Свободно программировать на нём я не умею.

Далее сделал шаблон с айтемами типа HTTP Agent, настроил заголовки аутентификации с макросом, куда записывается токен, и POST запросы на извлечение нужных данных. С помощью предобработки айтемов вычленил нужные мне данные. Использовал несколько шагов:
1. JsonPath для того, чтобы выбрать нужную строку с данными.
2. Обрезал квадратные скобки [ ], которые остаются от json строк.
3. Сделал преобразование значений true и false, которые приходят в ответ на запрос, в 1 и 0 соответственно, чтобы хранить в базе не строковые значения, а числовые.
Затем сделал простые триггеры на основе значения айтема.

Шаблон достаточно прикрепить к хосту, указать макросы {$ID_ORG} и {$ID_TERM}, которые соответствуют ID организации и терминала в системе iikko и мониторинг заработает.

Такая вот нетривиальная задача решается относительно просто с помощью Zabbix. Изначально думал, что придётся привлечь программистов, чтобы реализовать всю эту логику перед передачей данных в Zabbix. Была такая возможность. Но потом чуть повнимательнее посмотрел и понял, что можно всё это через Zabbix сделать практически штатным функционалом.

#zabbix
​​В Linux можно быстро и просто отключать и включать ядра процессора с помощью chcpu. Иногда это бывает нужно, чтобы понять, как поведёт себя виртуальная машина, если у неё уменьшить ресурсы CPU.

Смотрим количество ядер:
# lscpu | grep list
On-line CPU(s) list:       0-3
Доступны 4 ядра с 0 по 3. Можно выключить любое количество ядер, кроме нулевого.

Отключим 2 ядра:
# chcpu -d 2,3
CPU 2 disabled
CPU 3 disabled

Проверяем:
# lscpu | grep list
On-line CPU(s) list:       0,1
Off-line CPU(s) list:      2,3

Сейчас если запустить top или htop, то будут видны только 2 процессора. Если сделать тест нагрузки, то явно будет просадка по производительности. Не обязательно пропорциональная уменьшенным ядрам. Всё зависит от программ для тестирования.

Возвращаем ядра на место:
# chcpu -e 2,3
CPU 2 enabled
CPU 3 enabled

Простой и удобный функционал. Мне интересно, а в Windows есть что-то подобное?

#linux #terminal
Решил сделать подборку консольных команд по загрузке и выгрузке файлов. Постоянно приходится этим пользоваться. И если с загрузкой всё довольно просто, то выгрузку приходится вспоминать, как сделать, так как редко нужно.

Скачать файл под своим именем:
curl -O https://site.com/file.tar.gz
wget https://site.com/file.tar.gz

Скачать и сохранить с заданным именем:
curl -o file_new.tar.gz https://site.com/file.tar.gz
wget -O file_new.tar.gz https://site.com/file.tar.gz

Для curl я обычно применяю пару дополнительных ключей:
-s — режим silent, отключает вывод служебной информации, актуально для скриптов;
-k — игнорирует ошибки TLS, например, с недоверенным сертификатом.

И у wget, и у curl есть одинаковая опция по ограничению скорости загрузки через ключ --limit-rate 10M. Суффиксы k, M, G обозначают килобайты, мегабайты, гигабайты.

Скачать скрипт и сразу запустить его 😱:
curl -sSL https://get.docker.com/ | sh
Автоматическая установка докера. Я постоянно пользуюсь.

Для аутентификации в curl достаточно через ключ -u добавить имя пользователя и пароль. Работает как с basic auth, так и с kerberos, ntlm. Для кербероса надо только не забыть домен добавить к имени пользователя.
curl -O -u user:password https://site.com/file.tar.gz

Скачать набор файлов из текстового списка, где каждая строка это отдельная ссылка:
wget –I urls.txt
Если добавить ключ -b, то скачивание будет идти в фоновом режиме. Актуально, когда качаешь по списку набор iso. Это может долго длиться.

Скачать целиком сайт. Работает нормально, сам проверял несколько раз, скачивая некоторые сайты:
wget -r -k -l 7 -p -E -nc http://site.ru/
7 — глубина вложенности страниц от указанной, можно сделать меньше или больше в зависимости от сайта, чтобы не качать уже мусорные ссылки.

Скачать файл с ssh сервера через scp:
curl -O -k -u user scp://192.168.1.1:22/data/file.tar.gz
Запрос пароля появится в консоли. Можно его сразу указать, только имейте ввиду, что пароль останется в history:
curl -O -k -u user:password scp://192.168.1.1:22/data/file.tar.gz
И то же самое, только с ключом:
curl -O -k -u user --key ~/.ssh/id_rsa scp://192.168.1.1:22/data/file.tar.gz

Скачать файл по ftp:
curl -O ftp://user:password@ftpserver.ru/data/file.tar.gz

Скачать файл по smb:
curl -O -u "domain\user:password" smb://server.local/share/file.tar.gz

Выгрузка (загрузка на сервер) файлов по ftp, ssh, smb:
curl -T file.tar.gz -u user:password ftp://ftpserver.ru/data/
curl -k -T file.tar.gz -u user scp://ftpserver.ru/data/
curl -k -T file.tar.gz -u user --key ~/.ssh/id_rsa scp://ftpserver.ru/data/
curl -T file.tar.gz -u "domain\user:password" smb://server.local/share/
Причём можно сразу загрузить группу файлов с именами, которые можно задать по стандартной маске в bash:
curl -T "file[1-100].tar.gz" ftp://ftpserver.ru/data/

#bash #terminal #curl
Традиционный топ постов за прошедший месяц. В прошлом месяце забыл про него 🤷🏻‍♂️. Мне самому нравится эта рубрика. Интересно посмотреть, что больше всего привлекло внимания и было наиболее интересным и полезным.

📌 Больше всего просмотров:
◽️Мем из комментариев к одной статье на сайте (7725)
◽️Проект по безопасности workbench.cisecurity.org (7679)
◽️Моя фотка из музея вооружения (7575)

📌 Больше всего комментариев:
◽️Маршруты для OpenVPN сервера (105)
◽️Заметка про Linux на компе для детей (102)
◽️Сборка Windows tiny11 (88)

📌 Больше всего пересылок:
◽️Связка R-Studio и HDDSuperClone (579)
◽️Проект по безопасности workbench.cisecurity.org (509)
◽️Подборка на тему консольных утилит и команд (470)
◽️Мой вариант универсального конфига Nginx (450)

📌 Больше всего реакций:
◽️Мем с собакой и дропом таблицы (228)
◽️Решение проблемы с очередью запросов в Zabbix (167)
◽️Запрет на создание конкретного файла в Linux (151)

#топ
​​Когда настраиваешь сбор и анализ логов, хочется сразу проверить, как это работает. Особенно, если используются какие-то выборки или реакция на конкретные события. С текстовыми логами всё просто. Достаточно любым способом добавить новую строку. С логами Windows чуть сложнее.

Для решения этой проблемы есть open source проект ntTraceControl. Он состоит из небольшого установщика, который добавляет модуль PowerShell. Достаточно скачать из репозитория и установить msi пакет и можно пользоваться.

Вот простой пример. Добавляем в журнал безопасности событие с ID 4624, указав вымышленное имя пользователя или домен:
> Import-Module ntTraceControl
> Write-SecurityEventId4624 -SubjectUserName "SERVERADMIN.RU" -SubjectDomainName "HOMELAB"

Таким образом можно сгенерировать любую необходимую запись в лог файле. Другие примеры есть в репозитории.

Напомню, что виндовые логи умеет собирать тот же Zabbix. Вот пример настройки:
Windows EventLog Monitoring With ZABBIX
https://www.youtube.com/watch?v=rOBatrWrg2Y

Или Elastic:
Настраиваем сбор логов Windows Server в ELK Stack
https://serveradmin.ru/nastraivaem-sbor-logov-windows-server-v-elk-stack/

#windows #мониторинг
​​Продолжу тему мониторинга. Думаю многие уже заметили, что это одна из самых популярных тематик на канале. Вообще, я давно заметил, что мониторинг это то, чем мне нравится заниматься больше всего остального. И для этого есть несколько причин. Во-первых, мониторинг чаще всего не критически важный сервис, поэтому им можно заниматься планово, без авралов и аварий. Во-вторых, это творческая деятельность, где надо постоянно придумывать нетиповую реализацию. Ну а в-третьих, это просто красиво, смотреть всякие графики, делать дашборды, наблюдать метрики.

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

1️⃣ Если у вас срочные триггеры висят незакрытыми днями и неделями, можете смело их отключать или менять. У меня это постоянно происходит. Изначально настраиваешь мониторинг и думаешь, что вот на это надо реагировать. А потом то времени нет, то отложишь и забудешь, а по факту оказывается, что алерт не очень то и важный. Периодически захожу в мониторинг и прорабатываю подобные триггеры.

2️⃣ Часто нет необходимости реагировать на метрики, за которыми стоят вышестоящие метрики, напрямую зависящие от первых. Лучше делать оповещения на более высокоуровневые сущности. Поясню на конкретном примере.

Допустим, вы мониторите доступность сайтов (старая, но полностью актуальная статья про Zabbix, так как там модуль мониторинга сайтов с тех пор не менялся). Для них есть метрики, следящие за кодами ответов веб сервера, за скоростью ответов и за полосу пропускания, с которой сайты отдают данные. Сайты живут на отдельном сервере. На этом сервере есть триггеры на нагрузку на процессор, на память и т.д.

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

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

❗️По первому пункту я написал, но при этом у меня есть вот такие триггеры (см. картинку). Вы что делаете с такими висюнами? Отключаете или так же месяцами висят?

#zabbix #мониторинг
Обновил и актуализировал большую статью на сайте:

Построение ИТ инфраструктуры небольшого офиса
https://serveradmin.ru/postroenie-it-infrastruktury-nebolshogo-ofisa

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

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

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

#подборка
Ещё один мем из комментариев к сайту. У меня есть статья с настройками iptables. И там все правила я привожу в виде картинок, чтобы их нельзя было скопировать. А уже в конце прикладываю текстовый файл со всеми правилами.

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

В подобную ловушку я попал как-то раз сам. Есть другая статья, где правила фаервола написаны текстом. Я их оттуда копирую и применяю, так как правила мои и я их много раз использовал, уверен в них.

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

#мем
​​Немного тематического юмора в выходной день. Видео с небольшими эпизодами из жизни, которые смогут в полной мере понять только айтишники. Папа просит установить драйвер, мама рассказывает а выигрыше, о котором ей сообщили по почте, папа просит подсказать, где найти загруженное видео.
https://www.youtube.com/watch?v=3XliP_OTjuk

А вот зарисовочка на тему AI и всяких ChatGPT. Досмотрите до конца, там самое интересное как раз по нашей, админской, части. Я прям посмеялся.
https://www.youtube.com/watch?v=KuvOwbtSeHk

Видео пародия на Цельнометаллическую оболочку Стенли Кубрика. Системные администраторы проходят стажировку в специальном подготовительном лагере.
https://www.youtube.com/watch?v=AD9NX_EXhXM

У этой компании много забавных роликов на канале. Я почти все их посмотрел, что-то тут публиковал в разное время. Жаль, что подобного юмора очень мало. Если кто-то знает примеры подобных видео, поделитесь в комментариях.

#юмор
Бюджетные серверы на базе десктопных процессоров

А вы знали, что в @Selectel есть возможность арендовать выделенный бюджетный сервер линейки Chipcore? Это полностью изолированные серверы, размещенные в защищенных дата-центрах под круглосуточным наблюдением, но по цене ниже, чем обычные выделенные серверы Selectel.

Теперь при аренде последних конфигураций Chipcore вы можете связать серверы по локальной сети. Эта особенность позволяет создавать кластеры для решения задач с высокими требованиями к производительности и отказоустойчивости: например, для развертывания Kubernetes или работы с БД и 1C.

Выбрать сервер можно из готовых конфигураций и арендовать по доступной цене на срок от одного дня. При долгосрочной аренде на 3, 6 или 12 месяцев вас ждут скидки до 15%.

Регистрируйтесь по ссылке и заказывайте бюджетный выделенный сервер из линейки Chipcore: https://slc.tl/u9zgs

Реклама ООО Селектел Pb3XmBtztB8Yaa8eevEtbs5smaJ9q77y7EAE4p8
У меня была заметка про мониторинг метрик из api iiko через zabbix. Там была сложность в том, что нужно было постоянно обновлять временный токен и как-то его использовать для запросов. Я предложил свою реализацию обновления токена и записи его в макрос шаблона с помощью обычного bash скрипта.

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

Через веб проверку первым шагом обновляется токен и записывается во временную переменную, а на втором шаге этот токен через post запрос к Zabbix api записывается в макрос шаблона. Получается очень удобное и красивое решение, которое полностью хранится на сервере Zabbix в виде хоста и шаблона и не требует никаких скриптов.

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

Хост: https://serveradmin.ru/files/zabbix/HOST-IIKO_API_Token_Update.yaml
Шаблон: https://serveradmin.ru/files/zabbix/TEMPLATE-IIKO_API.yaml

#zabbix
Я обновил и актуализировал популярную на сайте статью по настройке сервера 1С:

Установка и настройка 1С на Debian с PostgreSQL
https://serveradmin.ru/ustanovka-i-nastrojka-1s-na-debian-s-postgresql/

Статья подробная. Позволяет простым копированием и ставкой настроить указанную связку. В ней показаны:

Установка и настройка свежей версии сервера 1С и PosgtreSQL 15 на Debian 11.
Пример создания баз данных на этом сервере и подключение к ним.
Бэкап и обслуживание postgresql баз утилитами сервера бд. Рассказываю про свой подход к этому процессу и привожу скрипты автоматизации. 
Как я тестирую восстановление из sql дампов и делаю контрольную проверку в виде выгрузки баз в .dt файлы в консоли Linux. Всё это автоматизируется скриптами. 
Рассказываю про свои подходы к мониторингу этих бэкапов и выгрузок, чтобы всегда быть уверенным в том, что у тебя есть гарантированно рабочие бэкапы.

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

#1с #postgresql
​​Некоторое время назад писал про Postman для работы с API. Мне он показался тяжёлым и избыточным по функционалу для простой работы, которую я обычно делаю.

И вот на днях в рассылке вижу информацию о полностью open source аналоге (так его позиционируют авторы) Postman — Bruno. Они даже отдельную заметку написали Bruno Vs Postman. Я заинтересовался и попробовал его.

Программа мне понравилась. Весь функционал, что я использовал в Postman, там есть (переменные, запросы, заголовки и т.д.). А существенные плюсы Bruno могу отметить следующие:

1️⃣ Сохранение проектов в текстовом виде. Можно открыть все сохранённые запросы блокнотом и посмотреть. Благодаря этому все настройки и данные можно хранить в git, выбирая для каждого проекта свою директорию.

2️⃣ Никаких привязок к онлайн сервисам. Полностью десктопное приложение, для которого не нужны никакие регистрации.

3️⃣ Более шустрое приложение, хотя это тот же JavaScript и скорее всего Electron.

Проект свежий. Как я понял, его недавно представили публике. Первый релиз был в октябре 2022 г. Есть расширение для Vscode, которое обеспечивает подсветку синтаксиса для текстовых файлов .bru, в которых хранит информацию Bruno.

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

#api #devops
​​Вчера была рассылка от Zabbix с информацией о том, что вышел релиз версии 6.4. Сразу уточню, что это не LTS версия, срок её поддержки пол года. Если вам не нужны нововведения этой версии, то обновляться большого смысла нет. Лучше дождаться LTS 7.0. Его обещают к концу 2023 года. Я как раз с его выходом хочу обновить весь свой раздел на сайте с Zabbix. Там как раз и Debian 12 уже зарелизится.

Перескажу нововведения в 6.4, с которыми можно ознакомиться в пресс релизе - What’s new in Zabbix 6.4.

Автоматическое сопоставление групп и ролей пользователей. Актуальная штука для крупных установок. Теперь работает автоматическое сопоставление локальных групп и ролей в Zabbix и групп в LDAP и SAML. Можно явно указать, что пользователи LDAP с такими-то атрибутами являются членами таких-то групп в Zabbix и имеют доступ к определённым типам media.

Зависимость событий. Можно указывать зависимости событий друг от друга. Например, один триггер может быть указан как причина для другого триггера. Этот функционал немного похож на зависимости триггеров, только работает для других целей. Тут мы не подавляем зависимые триггеры, а выстраиваем цепочку событий. Например, увеличилась нагрузка на CPU, следом увеличилось время выполнения запросов в БД, а потом выросло время обработки заказа в магазине. Из описания не понял, как это выглядит на практике. Для меня не очевидно, как можно автоматически выстраивать такие события. Транзакции могут буксануть и от нехватки памяти, а могут и нет.

Настройки синхронизации zabbix proxy и active agent. Появились новые параметры, управляющие интервалами обновления конфигурации для zabbix proxy и активного агента. Раньше использовались какие-то неизменяемые интервалы. Если не ошибаюсь, там минута была. Теперь хоть 1 секунду ставь.

Совместимость версий Proxy и сервера. Теперь нет необходимости каждый раз обновлять Proxy при обновлении сервера. Раньше это было обязательно. Прежде чем обновить сервер, нужно было на ту же версию обновить все Proxy, иначе они не заработают с новой версией сервера. Теперь заработают в рамках одной ветки, либо прошлой LTS ветки. Если у вас прокси 6.0, а сервер хотите обновить до 6.4, прокси можно не обновлять. И если у вас LTS 7.0, а прокси не ниже 6.0, то тоже можно не обновлять прокси. А вот если у вас будет сервер 7.2, то прокси уже должна быть не ниже 7.0.

Улучшение сбора метрик по SNMP. Улучшен механизм массового сбора метрик по SNMP. Добавлена поддержка операций типа GetBulk. Для этого добавлен новый айтем walk[OID1,OID2,...]. Также добавлена новая предобработка, которая bulk запросы преобразует в json. Стандартные шаблоны обновлены с использованием нового айтема.

Новое меню веб интерфейса. Немного переработали основное меню веб интерфейса. Опять разом устарели все старые статьи 😔.

Потоковая передача метрик по HTTP. Появилась возможность передачи метрик в брокеры сообщений типа Kafka, RabbitMQ и т.д. Настраивается в новом разделе Administration ⇨ General ⇨ Connectors. Теперь будет проще встраивать Zabbix в современные информационные системы.

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

Фреймворк для создания виджетов. Теперь виджеты можно создавать самостоятельно. Они преобразованы в модули, которые можно создавать и добавлять.

Выбор интерфейса для простых проверок. В айтеме с простой проверкой (simple check) можно выбрать интерфейс, если их несколько, с которого будут выполнять проверки.

Преднастройки для почтовых сервисов. Для Gmail, Gmail relay, O365, O365 relay и Generic SMPT.

Новые шаблоны: ❗️OS processes by Zabbix agent, Veeam Backup and Replication, BMC Control-M и др.

Очень жду обновление модуля веб проверок, но пока его нет.

#zabbix
​​▶️ На канале RomNero вышла серия из двух видеороликов на тему HA Load Balancer. Очень рекомендую посмотреть тем, кому близка эта тема. Я там хоть и не узнал ничего нового, но с удовольствием посмотрел, так как материал сделан очень качественно.

В первом ролике даётся обзорная и наглядная информация по теории балансировки нагрузки на веб сервера и в целом на современные веб системы. Автор подготовил наглядную визуализацию и подробно всё описал. У него получается рассказывать просто, понятно и информативно. Хорошая речь и дикция, приятно слушать.

Во втором ролике рассмотрена практическая часть по настройке Load Balancer на базе HAproxy и Keepalived. Автор на наших глазах настраивает и демонстрирует работу двух балансировщиков нагрузки, подключенных к двум веб серверам. Используется один плавающий IP на базе vrrp протокола. Работу перехода IP адреса от одного балансировщика к другому автор демонстрирует на примере падения службы haproxy на одном из балансировщиков.

❗️В комментариях ко второму видео было много рекомендаций на панель управления HAProxy, про которую я неоднократно писал — Roxy-WI. С её помощью можно реализовать тот же функционал, что показал автор, только с помощью веб интерфейса.

Рекомендую канал автора, кто ещё не подписан. У меня здесь было много видео от него. Сам я их все смотрю. Там в основном база даётся, но мне всё равно нравится.

#webserver #haproxy
​​Существует непримечательная на первый взгляд программа под Windows — Open Hardware Monitor, которая показывает типовую информацию по загрузке системы, а также информацию с датчиков железа (температура, напряжение, обороты вентиляторов и т.д.).

Эта программа попала в поле моего зрения много лет назад, когда нужно было настроить мониторинг температуры железа на сервере под Windows. В Open Hardware Monitor нашлась консольная версия, которая передаёт показания в консоль, откуда их удобно забирать в Zabbix. Я реализовал это с помощью простых bat скриптов.

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

Есть свежий форк от 22 августа 2022 года, который можно использовать для этих же целей. К сожалению, в последних версиях я не увидел консольной программы, но вместо этого основная программа умеет работать как сервис и записывать показания сенсоров в csv файл. По идее, это даже удобнее в реализации мониторинга. CSV файл без проблем парсится. Помимо этого данный форк умеет запускать веб сервер и отображать все метрики через браузер, откуда их тоже можно тем или иным образом извлекать.

Конкретно для меня эта программа потеряла актуальность, потому что очень давно не настраивал Windows сервера на голое железо. К тому же чаще всего сервер имеет BMC (Baseboard Management Controller, т.е. ilo, idrac и подобное), откуда можно забрать все необходимые метрики либо по IPMI, либо по SNMP. Но если у вас обычный самосбор или простенький сервер без BMC, то эта программа может выручить. Я её использовал на самосборах под бесплатным Hyper-V, когда обслуживал офисы.

При желании, этот инструмент можно приспособить под мониторинг пользовательских компов. Хотя лично я не вижу в этом большого смысла. Никогда не мониторил пользовательские компьютеры.

⇨ Сайт / Свежий форк / Форк консольной версии

#windows #мониторинг
Обычно, когда надо проверить какой-нибудь TCP порт, я беру telnet и отправляю запрос на этот порт. Синтаксис одинаковый на всех системах. Выглядит это примерно так:
# telnet 1.1.1.1 53
Connected to 1.1.1.1.
Escape character is '^]'.

Как вы знаете, telnet не работает с UDP, что логично. Установить соединение по UDP невозможно, так как по UDP пакеты просто отправляются, без подтверждения получения и установки соединения. Это не двусторонний обмен, как в TCP. Так что гарантированно и быстро проверить доступность UDP порта не всегда просто.

Отправить UDP пакет можно с помощью утилиты ncat:
# nc -z -v -u 212.193.62.10 53
По идее, она показывает статус open или closed, но я не знаю, как конкретно работает эта проверка. Зачастую отправляешь пакет в точно неиспользуемый порт, и получаешь в ответ, что он open. Можно быть уверенным только в том, что nc отправила тестовый пакет. Более надёжно можно сделать проверку через nmap, но сегодня не об этом.

Если нужно просто и быстро отправить какой-то UDP пакет, то сделать это можно через псевдо устройства Linux:
# echo -n "test" > /dev/udp/1.1.1.1/53
Эту команду удобно использовать, когда идёт отладка каких-то правил в firewall. Она гарантированно сразу же отправляет пакет, без каких-либо дополнительных параметров, проверок, ожиданий и т.д. Отправил пакет, он тут же на счётчик правила прилетел.

Вообще, с помощью /dev/tcp и /dev/udp можно делать всякие неочевидные штуки. Например, посмотреть точное время:
# cat </dev/tcp/time.nist.gov/13

Или получить ответ от веб сервера:
# exec 5<>/dev/tcp/eth0.me/80
# echo -e "GET / HTTP/1.0\n" >&5
# cat <&5
Мы связали файловый дескриптор с веб сервером eth0.me, отправили через дескриптор GET запрос и вывели ответ. Там будет ваш внешний ip адрес.

#linux #terminal