Архив автора human

Автор:human

Централизованный сбор и анализ логово с помощью syslog-ng,td-agent,elasticsearch,kibana,grafana,elasticalert

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

Содержание

  • 1. Настраиваем кластер для сбора логов на основе syslog-ng,elasticsearch,kibana,graphana,elasticalert
  • 2. Настраиваем агенты на клиентах и форматы логов для отправки в агрегатор
  • 3. Различные сниппеты по логам

Настраиваем кластер для сбора логов на основе syslog-ng,elasticsearch,kibana,graphana,elasticalert

Наш кластер будет состоять из 3 нод.

1 нода — elasticsearch master нода, syslog-ng агрегатор логов, kibana и graphana для визуализации логов, elasticalert для реагирования на события по логам(например большого количества 500 ошибок nginx в определенный период времени).
2 нода — elasticsearch data нода
3 нода — elasticsearch data нода
На всех нодах установлена debian 8 с ядром 4.9.0

Установка syslog-ng

Удаляем rsyslog

Ставим необхдимые системные пакеты

Ставим java на debian 8

Ставим java на ubuntu

Устанавливаем переменную окружения

Ставим syslog-ng последней версии на debian 8

Ставим syslog-ng последней версии на ubuntu 16.04

Ставим последний elasticsearch и kibana на все ноды

Правим системные файлы.
Правим limits.conf

Правим sysctl.conf

настраиваем kibana и elasticsearch

НАстроим на макимальное использование памяти
в /usr/lib/systemd/system/elasticsearch.service

И

Отредактируем файл на всех нодах

Блок — делаем половину озу — у меня 12 — поставил 6

Конфиг master ноды elasticsearch

Смотрим здоровье и статус кластера

Такой вывод

Конфиг dataноды elasticsearch elasticnode2

Конфиг dataноды elasticsearch elasticnode3

Конфиг kibana

Рестартуес сервисы

Подготовка формата логов nginx,php и nodejs

Настройка формата логов в nginx

Добавляем формат логов и включаем запись их в файлы

Настройка логов php — отправка их в nginxerror.log

Добаляем в конфиг, например у мея это

Таким образом логи ошибок будут php будут попадать в nginx error log.
Идем далее.

Настройка формата логов nodejs, запускаемой через pm2

Делаем запуск с такими параметрами

Логи будет писаться в одну строку в json формате.

На этом подготовка формата логов окончена
Настраиваем syslog-ng на отправку логов nginx,php и nodejs через udp на сервер логов

Приведем syslog-ng к определенному виду. У нас на текущий момент версия 3.12

Все конфиги будем инклудить для удобства через conf.d. Конфиг для парсинга созданных нами логов и отправки их на сервер.

Далее отдельным файлом выделим стандартные системные логи

Проверяем

Если всё ок — стартуем syslog-ng, но только после того как настроим прием логов на сервере.

Настраиваем syslog-ng сервер на прием логов nginx,php и nodejs через udp и отправку их в elasticsearch и postgresql.

Приведем syslog-ng к определенному виду. У нас на текущий момент версия 3.12

Так же как и на клиентах, все конфиги будем инклудить для удобства через conf.d.

Здесь мы настроили парсинг входящего лога nginx acceess для отпраки его в elasticsearch и postgres, а также прием логов nginx error и nodejs и отправку их в elasticsearch.
Индексы созданные в elasticsearch соответственно буду иметь следующие названия:

Чтобы логи писались в postgresql создадим базу nginx_access на любой ноде и настроим подключения по вашим данным

В ней будут создаваться таблицы вида

Все рестартуем агенты на сервере и отправителе.

Заходим в kibana на

Добавляем индекс

В поле timestamp выбираем

Смотрим в discover наши логи


Все разложено как и надо по парам!!!

Скрипт очистки логов nginx чтобы не засирать систему.

Добавляем его по крону каждые 2 часа

Profit!!

Автор:human

Почтовый сервер mailcow через docker за 30 минут

Почтовый сервер mailcow через docker за 30 минут

Недавно наткнулся на довольно интересный комбаин из postfix-sogo-gui-панели для управления почтовыми сервисом. Называется он mailcow. В этой статье решил кратко описать как это все работает. Итак, приступим. Представим что нам надо настроить почтовый домен em.itc-life.ru

Требования:

    — OS linux
Пакеты
    — docker-ce
    — docker-compose
Доступные порты:

Эти порты можно поменять ниже в mailcow.conf, если они у вас уже заняты, например другими докер контейнерами.

Приступаем к установке

Клонируем репозиторий

Запускаем генератор конфига.

Вводим

Мы сгенерировали конфиг на основе которого будет собираться наша связка из докер-контейнеров
Посмотреть его можно в файле

Теперь приступим к сборке

Подождем пока все собрется. Если не будет начинаться сборку, сделайте

Учтите это обновит докер, docker-compose. Может помочь правка docker-compose. Должна поддерживаться версия 2.3 иначе не соберется
После сборки поднимаем нашу сборку

Часть персистентных данных хранится в докерах volumes

Заходим по адресе
https://em.itc-life.ru

Данные для входа

Логин — admin
Пароль — moohoo

Меняем его после входа

Далее добавляем почтовые домены

Создаем почтовые ящики

Далее добавлем dkim. Выбираем длину ключа 1028

Добавляем сгенерированный ящик в relay host — не обязательно

Заходим в сгерерированнй почтовые ящики через

Теперь остается настроить нашу почту чтобы она не попадала в спам. Настройка dns записей. Почтовый домен будет em.itc-life.ru

Dkim текстовые записи

Настраиваем запись mx для почтового домена em.itc-life.ru

Регистрируем свой сервер в почтовом сервисе google

https://postmaster.google.com/

Добавляем txt запись предоставленную google и нажимаем далее.

Автор:human

Отправка логов через syslog-ng в сервер логов syslog-ng(elasticsearch,postgresql)

Пишем логи nginx, php, nodejs в базу postgres через syslog-ng напрямую в базу или через сервер логов

Установка syslog-ng

Удаляем rsyslog

Ставим необхдимые системные пакеты

Ставим java на debian 8

Ставим java на ubuntu

Устанавливаем переменную окружения

Ставим syslog-ng последней версии на debian 8

Ставим syslog-ng последней версии на ubuntu 16.04

Ставим последний elasticsearch и kibana

настраиваем kibana и elasticsearch

Конфиг elasticsearch

Конфиг kibana

Рестартуес сервисы

Подготовка формата логов nginx,php и nodejs

Настройка формата логов в nginx

Настройка логов php — отправка их в nginxerror.log

Добаляем в конфиг

Настройка формата логов nodejs, запускаемой через pm2

Делаем запуск с такими параметрами

На этом подготовка формата логов окончена

Настройка отправки логов через syslog-ng в postgres

Создаем базу в pg

Правим файл

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

Далее часть конфига с отправкой полного формата логов nginx access, nginx error, nodejs. Таблички в базе создаеются по имени хоста,дате.

Проверяем

Если всё ок — стартуем

Отправка логов на сервер syslog-ng от syslog-ng и вставка логов в postgresql,elasticsearch

Для того чтобы писать не напрямую в базу а в сервер логов syslog-ng, который уже будет отпралять это в базу NOsql elasticsearch или в SQL postgres нам понадобится внести изменения. Наш клиент будет отправлять логи на сервер по udp.

Настройка на клиенте.

Создадим отдельный файл с конфигом отправки логов. Удалим последние изменения — именно удалим блок с отправкой логов и создадим файл в

Вставим туда следующее содержимое

Настройка на сервере.

Создадим отдельный файл с конфигом отправки логов. Удалим последние изменения — именно удалим блок с отправкой логов и создадим файл в.

Все рестартуем агенты на сервере и отправителе.

Заходим в kibana на

Добавляем индекс

В поле timestamp выбираем

Смотрим в discover наши логи


Все разложено как и надо по парам!!!

Скрипт очистки логов nginx чтобы не засирать систему. Тут также td-agent — не обращаем на него внимания.

Добавляем его по крону каждые 2 часа

Profit!!

Автор:human

Запись логов nginx в базу данных mysql через syslog-ng

Ставим необходимые пакеты

Создаем базу в mysql и таблицу

Настраиваем фомат логов в nginx

Отправляем логи в syslog-ng

Правим syslog-ng файл. Настраиваем парсинг и запись лога в базу данных

Сохраняемся.

ЗАпускаем в режиме дебага

Перезапускаем после-то как ве проверили

Яндекс.Метрика