Архив категорий Системы мониторинга и сбора логов

Автор: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

Отправка логов через 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 файл. Настраиваем парсинг и запись лога в базу данных

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

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

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

Автор:human

Настройка системы ELKF — Elasticsearch,kibana,logstash,td-agent(fluentd)

Содержание

  • 1. Устанавливаем агентов на клиенты
  • 2.Настройка сервера сбора,обработки и отображения логов
  • 3.Настрока системы сбора в связке с syslog-ng logstash elasticsearch
  • 4.Примеры настройки сбора и парсинга логов
  • 4.1.Настройка td-agent на примере парсинга логов nginx access и error логов
  • 4.2 Настройка парсинга логов postgresql и отправка их в базу postgresql

Установка комбайна по сбору логов — Elastisearch, td-agent, logstash, packetbeat, filebeat,metricbeat

Все махинации подходят для ubuntu 16.04 и debian8,9

Сервер логов — ip 10.12.1.72, система ubuntu 16.04

1. Устанавливаем агентов на клиенты

Меняем конфиги агентов отправки логов на удаленный сервер

Редактируем файл filebeat

Редактируем файл metricbeat