ServerAdmin.ru
32.2K subscribers
1.11K photos
63 videos
29 files
3.14K links
Авторская информация о системном администрировании.

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

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

Ресурс включён в перечень Роскомнадзора
Download Telegram
Расскажу историю по мотивам утренней, как моя невнимательность и ошибки бесплатных СhatGPT и Qwen привели к тому, что я несколько часов ходил по кругу и не мог решить простейшую задачу. Думаю, это будет наглядным примером того, как не стоит сильно доверять ИИ даже в простых задачах.

Как я уже писал, у меня была задача - собирать логи Mikrotik в Loki. Первое, что я сделал - задал вопрос на эту тему ChtaGPT, чтобы в целом понять структуру задачи. Он ответил вполне логично, что можно взять устаревший Promtail, или современный и рекомендуемый Alloy. И сразу предложил к нему конфигурацию.

Я, уже наученный опытом использования конфигураций от ИИ, сразу же пошёл в документацию, чтобы самому собрать нужные параметры. Меня интересовали параметры для раздела loki.source.syslog. Я этот поисковой запрос вбил в Яндексе, в надежде сразу попасть в документацию, как это обычно бывает. И я действительно попал в документацию Grafana, только для продукта Agent, который был предшественником Alloy. У них одинаковая структура конфигурации, просто у Alloy намного больше параметров. Но визуально они не отличаются.

Я собрал конфиг для syslog на основе этой документации. Запустил, всё работает. Оправляю логи с Mikrotik и получаю ошибку парсинга. Я опять пошел в ИИ и спросил его, в чём ошибка и как решить. Он логично отвечает, что Alloy ожидает RFC5424, а получает RFC3164-подобный формат от Микротика.

И дальше он предлагает параметр, который решает эту проблему:

syslog_format = "rfc3164"

❗️Но вставляет его не в тот раздел конфигурации. Я добавляю, запускаю, получаю ошибку конфигурации на параметр syslog_format, якобы его не существует. Пишу это в ИИ и он мне на голубом глазу отвечает:

В Grafana Alloy нет параметра syslog_format (я привёл аналогию с другими инструментами — здесь это не работает).

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

И уже позже, когда я разбирался с метками на основе syslog полей, я попадаю в документацию Alloy и с удивлением вижу там:

The messages must be compliant with the RFC5424 syslog protocol or the RFC3164 BSD syslog protocol.

Это было как гром среди ясного неба. Я не понимаю, чем я вообще занимался и какую задачу решал. Сравнил две вкладки с документацией Agent и Alloy. Они очень похожи, так как последний является продолжением первого, просто для него добавились дополнительные параметры.

Сделать нужно было вот так:

loki.source.syslog "syslog_in" {
 listener {
  address = "0.0.0.0:1514"
  protocol = "udp"
  syslog_format = "rfc3164"
 }
 forward_to = [loki.process.syslog_process.receiver]
}

А ИИ предложил так:

loki.source.syslog "syslog_in" {
 listener {
  address = "0.0.0.0:1514"
  protocol = "udp"
}
 syslog_format = "rfc3164"
 forward_to = [loki.process.syslog_process.receiver]
}

Поставил параметр не в ту секцию. Когда получил ошибку на syslog_format, с какого-то перепугу заявил, что его не существует. А я из-за невнимательности поверил и решил, что его действительно нет.

Параллельно я этот же вопрос решал с Qwen и он тоже не дал рабочей конфигурации для Alloy.

Такая вот для меня поучительная история получилась. Не знаю, как работают платные версии, но бесплатные явно путаются и в некоторых сферах работают плохо. Я так понял, что тут наложилось то, что был Promtail, Agent и теперь появился Alloy. Все 3 программы решают одинаковые задачи, существовали одновременно, конфигурации похожи, поэтому получается путаница. Проще было с самого начала сделать всё самому. Это бы заняло 10-15 минут. А в итоге несколько часов потратил. Правда, многому научился. И получил в итоге самый удобный вариант, о котором напишу в следующей заметке.

☝️ По сути тут ошибся я сам, с себя ответственности не снимаю. С ИИ какой спрос? Он постоянно ошибается. В итоге наложилось одно на другое. ИИ мог бы помочь мне, но сделал ещё хуже - пустил по ложному следу.

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#ai
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105👎4
Завершу тему с Loki и Mikrotik окончательным и максимально удобным решением, к которому я пришёл, и которое можно сохранить себе. Я в итоге применил Vector, про который я уже не раз упоминал и которым я пользуюсь для других задач. Мне этот сборщик, обработчик и отправитель логов нравится больше всего. На примере настройки ниже вы сами убедитесь в его удобстве.

Ставим Vector любым удобным для вас способом. Я выбираю пакеты:

# bash -c "$(curl -L https://setup.vector.dev)"
# apt install vector

Приводим конфигурацию /etc/vector/vector.yaml к следующему виду:

sources:
 syslog_udp:
  type: syslog
  address: 0.0.0.0:3514
  mode: udp

sinks:
 syslog_to_loki:
  type: loki
  inputs:
   - syslog_udp
  compression: none
  encoding:
   codec: json
  endpoint: http://192.168.137.30:3100
  labels:
   job: mikrotik


Перезапускаем Vector:

# systemctl restart vector

Сравните это с конфигурациями Alloy. Небо и земля по читаемости. Здесь я на вход принимаю syslog любых форматов. А на выходе выпускаю json. Хотя у Vector в документации на выходе есть формат syslog. Я сначала с ним пробовал, так как это выглядит логично. Но на практике итоговый результат с json лучше.

Теперь идём в Mikrotik в раздел SystemLoggingActions и добавляем новое действие. Я назвал его Loki, указал адрес и порт сервера, где установлен Vector, в качестве Remote Log Format выбрал BSD Syslog. После этого в разделе Rules добавил новое правило для логов System действие - Loki. Всё, в Микротике больше ничего делать не надо.

Можно идти в Loki и смотреть логи. Не нужно специально настраивать парсинг логов, добавлять дополнительные метки и т.д. Всё, что надо, уже есть. При такой настройке Vector вы получите в логах следующие поля:

▪️hostname
▪️source_ip
▪️message

Ну и некоторые другие, которые уже не так нужны. Главное, что есть эти. Теперь можно легко различать логи из единого потока по устройствам. И не нужно настраивать разные приёмники или как-то насыщать логи дополнительной информацией об отправителях. При других настройках, в том числе в Alloy, я не смог добиться автоматического парсинга этих полей. А в Vector заработало сразу, благодаря его внутреннему преобразованию syslog в json.

Рекомендую познакомиться с Vector, если ещё не доводилось пользоваться. Он берёт логи из любых источников, например из обычного файла, docker logs, journald, kafka, kubernetes logs, logstash и ещё 40 различных программ и кладёт их в кучу разных источников: loki, elasticsearch, prometheus, clickhouse, postgres, текстовый файл и ещё около 50-ти различных типов. То есть он может взять практически всё что угодно, отправлять куда угодно, попутно преобразовывая. И при этом у него отличная документация с примерами.

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#loki #mikrotik
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍120👎1
У меня уже год в закладках лежит сервис OpenCloud. Это платформа для обмена файлами, форк OwnCloud. Первый релиз вышел в феврале 2025 года. Я тогда его увидел, записал и решил подождать, чтобы посмотреть, что в итоге получится. Недавно в новостях проскочило, что вышла уже 6-я версия. Как-то бодро они релизы выпускают. Думаю, сейчас уже можно развернуть и посмотреть, что получилось.

При беглом обзоре продукта создаётся впечатление, что это что-то неплохое. Серверная часть написана на Go, фронтенд на Vue.js, клиентская на C++. То есть это как минимум должно работать быстро. Продукт метит в конкуренцию с NextCloud и с таким стеком он как минимум в скорости работы его победит. А по функциональности надо смотреть, что в итоге получилось.

На этапе тестового запуская я немного погрустнел. OpenCloud - многокомпонентная система. Все её составные части надо увязать между собой: сам OpenCloud, прокси сервер Traefik, сервис онлайн документов Collabora Online, сервис идентификации и доступа Keycloak и некоторые другие компоненты. Вручную всё это настраивать было бы совсем хлопотно. В репозитории есть Docker Compose файлы для всего этого хозяйства.

Пробую запускать. Клонирую к себе отдельный репозиторий с compose:

# git clone https://github.com/opencloud-eu/opencloud-compose

Дальше надо заполнить файл с переменными:

# cp .env.example .env

Я указал только пароль и основные директории, остальное не трогал:

INITIAL_ADMIN_PASSWORD=secret_password
OC_CONFIG_DIR=/mnt/opencloud_data/config
OC_DATA_DIR=/mnt/opencloud_data/data

У директорий должны быть полные права для id 1000:

# chown -R 1000:1000 /mnt/opencloud_data

Попробовал запустить, ничего не получилось. Сервер запущен, но непонятно, как к нему обращаться. Нет открытых для HTTP портов. Пошёл читать документацию. Оказывается, по умолчанию сервер документов запускается без веб сервера. Надо запускать вместе с Traefik. Ну и для полноты картины добавлю сразу Collabora:

# docker compose -f docker-compose.yml -f weboffice/collabora.yml -f traefik/opencloud.yml -f traefik/collabora.yml up -d

Если запускаете в тестовом окружении без настроенного домена, то Traefik запустится с тестовыми доменами. Вам нужно будет в свой hosts файл добавить записи:

192.168.137.29 cloud.opencloud.test
192.168.137.29 traefik.opencloud.test
192.168.137.29 keycloak.opencloud.test
192.168.137.29 collabora.opencloud.test
192.168.137.29 wopiserver.opencloud.test

192.168.137.29 - адрес сервера, на котором запущен OpenCloud. Теперь через браузер по адресу https://cloud.opencloud.test я смог зайти в веб интерфейс, используя учётку admin / secret_password, как я указал в compose.yml.

Для того, чтобы корректно работала связка хранилища файлов и collabora, необходимо оба самоподписанных сертификата от доменов cloud.opencloud.test и collabora.opencloud.test добавить в доверенные. Без этого онлайн редактирование документов не заработает, браузер будет ругаться.

Веб доступ у меня нормально заработал. Я сразу через браузер залил туда папочку 10 ГБ с 4000 файлов. И пошёл ставить десктопные приложения. Для macOS и Linux они есть прямо в репозитории, а для Windows почему-то только ссылка на установщик, который лежит в Microsoft Store. Как напрямую скачать и установить приложение, я не понял. Пришлось качать установщик, который потом сам откуда-то скачал приложение.

Этот момент не понравился и выглядит странно. Продукт европейский, но они почему-то сознательно или не очень, но привязались к магазину Microsoft.

Android приложение есть в Google Store и F-Droid. Я установил из Google Store. Приложение маленькое и простое.

Я себе всё установил и настроил. Получилась заметка об установке. О работе с приложениями и общем впечатлении расскажу в вечерней заметке, так как тут уже кончился лимит на объём.

В целом, продукт неплохой, но пока ещё сильно похож на прародителя - ownCloud Infinite Scale. Чего-то нового и необычного я в нём не увидел.

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#fileserver
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94👎4
Продолжение темы с OpenCloud. Я рассказал, как его развернуть. Теперь поделюсь своими впечатлениями. Я в итоге установил:

▪️Веб интерфейс для работы в браузере
▪️Приложение под Windows
▪️Приложение под Android

📌 Возможности администратора

Администратор может сам создавать пользователей. Назначать им квоты на доступное место. Пользователей можно объединять в группы. Каких-то особых прав группам не назначить. Они используются для того, чтобы можно было дать группе права доступа к какому-то пространству.

Пространство - место для хранения файлов, которое не привязано к пользователю.

◽️Файлы пространства принадлежат только ему и даже при удалении пользователя, автора фала, сохраняются в пространстве.
◽️В пространстве ведётся логирование действий с файлами.
◽️Пространства можно по желанию подключать и отключать в приложениях.

Кроме управления пользователями, группами и пространствами в админке никаких настроек нет.

📌 Приложение под Windows

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

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

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

📌 Веб интерфейс

Помимо доступа к файлам, с которыми можно работать (загружать, скачивать) в веб интерфейсе можно редактировать документы. Причём как одному, так и в режиме реального времени с другими пользователями. Они будут видеть ваши изменения практически мгновенно. Реализовано это всё на базе небезизвестной Collabora Online, так что добавить особо нечего. Про неё много информации в сети.

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

Как я уже упоминал, веб интерфейс очень простой и быстрый. С ним комфортно работать, особенно в сравнении с NextCloud, который лишний раз открывать не хочется. Помимо офисных форматов веб интерфейс поддерживает редактирование txt и markdown.

📌 Android приложение

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

У меня было задвоение некоторых файлов в интерфейсе приложения. Загрузил через десктоп 2 файла, в вебе тоже увидел 2 файла, а в мобильном приложении их оказалось 4. После того, как я в мобильном приложении удалил копии, на самом деле удалились оригиналы. Они уехали в корзину, откуда я их восстановил. Приложение вышло совсем недавно, так что скорее всего найдутся и другие баги.

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

Продукт мне в целом понравился. Простой и лаконичный интерфейс. Минимум лишней функциональности. Реализована только работа с файлами и документами. Работает всё быстро, хороший отклик у веб интерфейса, пользоваться комфортно. Если взять мой опыт использования Яндекс.Диска, то OpenCloud закрыл бы все мои потребности. Отдельный вопрос с надёжностью и отсутствием багов. Но это без активного использования никак не проверить.

☝️Отдельно упомяну, что на сервере все файлы хранятся в открытом виде с оригинальными именами. Их легко бэкапить.

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#fileserver
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81👎1
Вчера был на конференции Deckhouseconf компании Флант. Пишу от себя, меня специально туда никто не звал. Сам просто увидел где-то анонс мероприятия и отправил заявку. Меня иногда спрашивают, как я попадаю на разные конференции. На некоторые приглашают, но чаще всего - нет. Сам отправляю заявку да и всё. Пишу, что я DevOps инженер. Ни разу отказ не получал. Может как-то идентифицируют меня, может так совпадает. Приезжаю как обычный участник и не отсвечиваю. Я и пишу о поездках редко, только если что-то полезное увижу.

Расскажу о том, что мне показалось интересным и полезным. Эта конференция в основном посвящена продукту Deckhouse. Это большая коммерческая платформа, которая объединяет в себе управление контейнерами и виртуальными машинами на базе Kubernetes. И приправлено всё это различными вспомогательными сервисами, некоторые из которых полностью или частично переписаны самостоятельно - мониторинг, управление секретами, управление кодом, хранилище контейнеров и т.д.

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

А в этом году рассказали и показали простой и удобный установщик и панель управления платформой, которая частично поддерживает community версию в режиме только просмотра, не управления. Установщик позволяет развернуть бесплатную версию на железо, виртуалки или в Yandex Cloud. Можно поставить как на одну ноду, так и на 2-3. То есть это нормальное решение для небольшого отказоустойчивого кластера.

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

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

Также напомню тем, кто не знает, что команда Deckhouse полностью переписала Prometheus на C++ 😎, назвав его Prom++. Он тратит на работу в разы меньше ресурсов, чем оригинальный Prom, и меньше, чем VictoriaMetrics, которая тоже отличается легковесностью. Prom++ полностью совместим с оригинальным Prometheus и внедряется простой заменой оригинала. Вообще ничего больше делать не надо. Если вы используете Prometheus или VictoriaMetrics, можете без каких-либо усилий снизить потребляемые мониторингом ресурсы. Не вижу никаких причин не делать это прямо сейчас.

Остальные выступления послушал, но поделиться в формате заметки больше нечем. Там в основном про внутреннее устройство Deckhouse было. Из приятного - выиграл на стенде Selectel очередного Тирекса - мягкую игрушку. У меня дети любят их. Дома несколько штук есть, некоторые совсем поистрепались.

#devops #kuber #prometheus
1👍87👎4
Реалии мониторинга в 2026 году. Вчера полдня, пока сидел на конференции, спамил внешний мониторинг, который доступность внешних узлов проверяет. Поначалу напрягся и расстроился, потом, когда увидел, что мигать начали все узлы, понял, что это что-то на хостинге с самим мониторингом происходит.

Для последнего месяца-двух это обычная история. Уже даже внимания не обращаю. Про один такой случай писал отдельно не так давно.

С уведомлениями в Telegram, кстати, надо будет, судя по всему, прощаться. У меня они хоть и ходят пока ещё, но уже как-то доверия к ним нет. Из-за всей этой катавасии, самым надёжным каналом доставки уведомлений остаётся email. У меня он, кстати, основной.

Если кому интересно, для внешнего мониторинга использую Gatus в том числе для мониторинга за самими мониторингами. Уже почти 2 года трудится. Мне нравится.
👍72👎2
Telegram стал одним из основных каналов получения уведомлений от мониторинга. Я сам его использую в этом качестве, но только для самых критичных событий. Основной канал у меня - email. В рабочее время я регулярно проверяю почту.

Буквально в эту пятницу вечером у меня перестают отправляться уведомления в Telegram от Gatus и от Zabbix. При этом уведомления отправляются через разные VPS, расположенные у разных хостеров. Честно говоря, вообще нет желания со всем этим разбираться. Нормальной работы с Telegram в ближайшее время не предвидится, так что лично я считаю, что уведомления от мониторинга лучше перенести на другие каналы доставки.

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

1️⃣ Самый простой вариант, которым я пользовался очень давно, когда Zabbix ещё толком не поддерживал без костылей отправку в Telegram. Существуют боты - imap клиенты. Они проверяют ящики и шлют уведомления в Telegram о новых письмах. Конкретно я использовал бота от Gmail (@gmailbot) и отдельный ящик, куда отправлялись только сообщения от мониторингов. Писал об этом заметку на сайте.

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

Это самый простой и быстрый способ настроить уведомления в Telegram, если вы решительно настроены использовать именно его.

2️⃣ Сервис ntfy.sh. Про него многие упоминали в последнее время. Я про него писал и тестировал. Настраивается он очень просто и быстро. В заметке есть примеры. Можно установить на смартфон родное приложение и получать туда пуши. Код серверной части открыт, можно развернуть у себя и заменить в скриптах отправку с telegram на ntfy. Там принцип отправки такой же - через curl.

3️⃣ Сервис Gotify. Это практически полный аналог предыдущего сервиса. Я тоже про него писал. Не знаю, кто из них лучше и популярнее. Например, Proxmox поддерживает gotify из коробки в своих настройках уведомлений. Я в равной степени в различных приложениях видел поддержку как ntfy, так и gotify.

4️⃣ Сервис Apprise. Он отличается от предыдущих двух, так как является сам по себе шлюзом для отправки в другие каналы доставки, в качестве которых могут выступать тот же ntfy, gotify, telegram, whatsapp, rocket.chat, irc и многие другие. О нём тоже писал заметку. Это тоже self-hosted сервис с открытым кодом.

Внедрив себе такой сервис, можно раз и навсегда решить вопрос с каналами доставки уведомлений. И если один из них будет недоступен, то можно быстро без перенастройки систем мониторинга, поменять его на другой.

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

5️⃣ Настроить уведомления в VK Workspace или MAX. Для обоих мессенджеров на прошлой неделе мне добрые люди предлагали готовое решение, так как они уже успели его реализовать. Мне лично без надобности пока, так что я не вникал, но задача не особо сложная и при желании решаемая.

Лично я пока склоняюсь к внедрению у себя ntfy или gotify. Мне видится это наиболее простым и удобным способом. Главное, чтобы пуши в смартфоне работали. Без них особого смысла во всём этом не вижу, так как традиционный email и так неплохо решает поставленную задачу. При желании, можно установить обычный клиент или Delta Chat и настроить уведомления в нём. Но на смартфоне не хочется постоянно держать в фоне запущенный клиент с регулярными проверками ящиков.

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#мониторинг
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111👎17
Я наконец-то дописал статью про сбор и хранение логов в Loki:

Настройка Grafana Loki для сбора логов

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

В статье рассказано, как развернуть Loki и отправить туда:

◽️Системные логи Linux и Windows
◽️Логи Docker контейнеров
◽️Логи веб сервера Nginx или Angie
◽️Логи сетевых устройств

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

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

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

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

Например, нельзя просто взять и сформировать топ 10 IP адресов клиентов сайта, которые сделали больше всего запросов за сутки или неделю. Если в ELK я просто брал и делал это на дашборде, то Loki выдаёт ошибки на слишком большой объём данных, который нужно обработать для выполнения запросов. Там нужно это реализовывать по другому. Ну и других различий много: аутентификация, очистка данных, отказоустойчивость и многое другое в ELK более развито.

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

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#loki #logs #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍154👎1
Сколько лет настраиваю веб сервера Nginx и только недавно случайно узнал, когда настраивал отправку логов в Loki, что веб сервер может одновременно писать логи в разных форматах. Просто в голову не приходило попробовать, что так можно.

Речь вот про что. Допустим, вы отправляете логи в какое-то хранилище. Туда удобнее отправлять формат json. Он удобен для машины, но не для восприятия человеком. Да, можно взять jq или что-то подобное для удобства, но это всё равно не то. Глазами удобнее всего смотреть на обычные текстовые логи.

Если хотите оставить себе возможность смотреть на логи глазами и грепать их, то можно сделать вот так. Показываю сразу пример конфигурации Angie/Nginx.

http {
    ...................
    log_format  main  
    '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

    log_format json escape=json
 '{'
  '"time_local":"$time_local",'
  '"remote_addr":"$remote_addr",'
  '"remote_user":"$remote_user",'
  '"request":"$request",'
  '"status": "$status",'
  '"body_bytes_sent":"$body_bytes_sent",'
  '"request_time":"$request_time",'
  '"http_referrer":"$http_referer",'
  '"http_user_agent":"$http_user_agent"'
 '}';

    ...................

    access_log  /var/log/angie/access.log main;
    access_log  /var/log/angie/access.json.log json;

    ...................
}


Разумеется, без особого основания так делать не надо, потому что нагрузка на запись от логирования возрастёт в 2 раза. Но если очень хочется, то можно. Будут писаться одновременно оба лога в разных форматах.

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

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#logs #angie #nginx
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112👎4
К одной из заметок про Loki в комментариях поделились ссылкой на любопытный проект - MKTXP-Stack. Это готовое решение для мониторинга и сбора логов с устройств Mikrotik. Состоит из:

◽️Prometheus для хранения метрик
◽️Grafana для визуализации
◽️MKTXP - exporter для сбора метрик с Микротиков по API
◽️Loki для хранения логов
◽️Promtail и Syslog-NG для сбора логов

Всё это упаковано в docker compose и запускается за 5 минут. Всё, что нужно - заполнить конфигурационный файл с доступом к микротикам. Весь стек полностью настроен. Я его запустил и попробовал. Экспортер и визуализация к нему очень понравились. Сбор логов не особо, потому что, во-первых, используется Promtail, а он не очень хорошо парсит syslog от микротов. Какие там есть проблемы, писал в отдельной заметке про Alloy. У него такие же проблемы, как у Promtail. Для этой задачи лучше подходит Vector. Во-вторых, у меня в контейнере с Promtail периодически вылезали ошибки, и он переставал собирать логи. Помогал перезапуск. С ошибками разбираться не стал, Promtail всё равно уже deprecated, его надо менять.

А вот сам экспортер и дашборд к нему очень хороши. Если у вас уже есть свой стэк Prometheus + Grafana, можете взять отдельно экспортер и дашборд. В репозитории есть инструкция, там всё просто для тех, кто работает с Prometheus и знает его. Для тех, кто не знает, покажу, как всё это дело запустить и наслаждаться мониторингом микротиков без погружения в тему prometheus и grafana.

Берём любую машину с установленным Docker. Клонируем себе репозиторий и переходим в него:

# git clone https://github.com/akpw/mktxp-stack.git
# cd mktxp-stack

Открываем файл конфигурации mktxp.conf в директории mktxp и добавляем свои устройства в файл:

[hAPax3-01]
  hostname = 192.168.137.1

[hAPax3-02]
  hostname = 192.168.137.2

[hAPax3-03]
  hostname = 192.168.137.3

И так далее. На всех устройствах добавляем отдельного пользователя для доступа mktxp. Ему достаточно прав read и api. Можете сделать через winbox или в консоли:

/user group add name=mktxp_group policy=api,read
/user add name=mktxp_user group=mktxp_group password=mktxp_user_password

Используем эту учётку в mktxp.conf

[default]
.................
  username = mktxp_user
  password = mktxp_user_password
...................

Остальные параметры включайте на своё усмотрение. Там по названию понятен смысл, плюс, есть комментарии. Если на устройствах будут разные учётки, то пропишите их в разделе с устройством.

Больше ничего делать не надо. Можно запускать весь стек. Для этого переходим в директорию mktxp-stack и запускаем:

# docker compose -f ./docker-compose-mktxp-stack.yml up -d

Переходим в веб интерфейс по IP адресу сервера на порт 3000, например http://192.168.137.29:3000. Попадёте сразу в веб интерфейс Grafana. Там уже всё настроено, аутентификация отключена. Вы сразу же увидите метрики со своих настроенных устройств. По крайней мере у меня сразу всё заработало. Ничего больше не делал.

Дашборд продуман и информативен. Я себе оставлю его. Не скажу, что сильно надо. Самому лень было настраивать. Но готовый можно взять. Там те же лизы от DHCP можно смотреть. Я иногда захожу через winbox поискать потерявшиеся хосты. Ну и просто статистику, загрузку интерфейсов, открытые соединения и топ хостов по ним посмотреть. На дашборде всё это нагляднее, чем в Winbox.

Как я уже сказал, аутентификация в Grafana отключена, по умолчанию почему-то установлена светлая тема. Мне привычнее тёмная. Поменять настройки grafana можно в основном compose файле - docker-compose-mktxp-stack.yml. Я вернул чёрный цвет:

GF_USERS_DEFAULT_THEME: "dark"

Хорошее, добротное решение. Мне понравилось. Ниже много интересных картинок.

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

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX 😩

#mikrotik #prometheus
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101👎2