Лог-сервер создает многосерверную пересылку и форматирование журналов

Linux

Сервер журналов построен с использованием функции rsyslog Linux для пересылки и сбора журналов.

rsyslog использует сервер Linux в качестве сервера журналов для сбора журналов, пересылаемых другими серверами, а именно клиентами rsyslog, поэтому rsyslog можно использовать как в качестве сервера журналов, так и в качестве клиента журналов.

Введение в настройку rsyslog

Конфигурация rsyslog включает файл /etc/rsyslog.conf и пользовательский файл конфигурации в папке /etc/rsyslog.d (пользовательский файл конфигурации будет загружен в глобальной конфигурации rsyslog.conf)

Файл конфигурации rsyslog.conf состоит из трех частей: конфигурация модуля, глобальная конфигурация и правила.

Конфигурация сервера журналов

Файл конфигурации rsyslog для сервера журналов включает следующие разделы:

Конфигурация модуля

Вообще говоря, вам нужно только настроить сервер журналов для получения файлов журналов с других серверов по протоколу UDP или протоколу TCP.

模块配置
Передача контента по UDP происходит быстрее, но возможны потери, а передача по протоколу TCP более безопасна.

Глобальная конфигурация

全局设置
В шаблоне на рисунке имя файла журнала произвольно, а содержимое следующего %% — это переменная rsyslog.

С переменной rsyslog: Элементы данных называются свойствами в rsyslog и обычно используются в шаблонах (то есть переменные между %%) или условными суждениями. Есть три основных свойства:

Message Properties:
msg			        匹配message中的msg部分
rawmsg			    从socket收到的信息,一般用来debug
rawmsg-after-pri	和rawmsg类似,但是syslog PRI被移除了
hostname		    message的主机名
source			    HOSTNAME的别名
fromhost		    message来源的主机名,一般是用在relay chain中
fromhost-ip		    同fromhost,不过获取的是ip
syslogtag		    message的tag
programname		    是tag的静态部分,例如tag是named[123456],则programname是named
pri			        message的PRI,undecoded格式

System Properties:
$bom			The UTF-8 encoded Unicode byte-order mask (BOM)
$myhostname		The name of the current host as it knows itself

Time-Related System Properties:
$now			当前日期,格式YYYY-MM-DD,now是指当前message被处理的时间
$year			当前年份(4-digit)
$month			当前月份(2-digit)
$day			当前日期(2-digit)
$hour			当前小时(24 hour) time (2-digit)
$hhour			From minute 0 to 29, this is always 0 while from 30 to 59 it is always 1.
$minute			当前分钟(2-digit)

правило (селектор + действие)

Каждая строка правила состоит из двух частей: части селектора и части действия. Эти две части разделены одним или несколькими пробелами или символами табуляции. Часть селектора указывает источник и уровень журнала, а часть действия указывает соответствующую операцию.

СЕЛЕКТОРЫ селектор также состоит из двух частей, объекта и приоритета, разделенных точкой. Первая часть — это источник сообщений или журнал, а вторая — уровень журнала.

Журнал имеет

auth(security), authpriv: 授权和安全相关的消息
kern: 来自Linux内核的消息
mail: 由mail子系统产生的消息
cron: cron守护进程相关的信息
daemon: 守护进程产生的信息
news: 网络消息子系统
lpr: 打印相关的日志信息
user: 用户进程相关的信息
local0 to local7: 保留,本地使用

Уровни журнала (в порядке возрастания):

debug:包含详细的开发情报的信息,通常只在调试一个程序时使用。
info:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
notice: 不是错误情况,也不需要立即处理。
warning: 警告信息,不是错误,比如系统磁盘使用了85%等。
err:错误,不是非常紧急,在一定时间内修复即可。
crit:重要情况,如硬盘错误,备用连接丢失。
alert:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
emerg:紧急情况,需要立即通知技术人员。
none:没有记录等级

Обратите особое внимание на ссылку .[=!] перед уровнем сообщения! Он имеет в виду следующее: . : Представляет значение «записывается уровень более серьезный, чем следующий (включая этот уровень)», например: mail.info означает, что до тех пор, пока это консультация по почте, а уровень информации более серьезный, чем информация ( включая саму информацию), будут записаны. .=: Это означает, что требуемый уровень - это уровень, который следует за ним, и ничего больше! .!: Возникает ощущение обратного отбора, что означает игнорирование сообщений выше или равных этому уровню! То есть те, кто ниже этого уровня, будут записаны!

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

动作设置

Примечание:
1. Знак минус перед лог-файлом означает, что файл пишется асинхронно, например: mail.!info -/var/log/mail.info
2, а *.emerg :omusrmsg:Журналы от имени всех служб уровня emerg информируют всех людей онлайн
3.
.* Имя шаблона указывает, что все журналы соответствуют формату шаблона файла журнала.

Конфигурация клиента журнала

Клиент журнала также использует функцию rsyslog, а файл конфигурации такой же, как и у сервера журнала, но обычно в глобальной конфигурации настраивается только следующее содержимое.

客户端配置
.@IP означает передачу всей системной информации и пользовательской информации, определяющей local0-local7, на IP-адрес через UDP..@@IP означает передачу по TCP Содержимое и правила пересылки также можно записать в отдельный файл в /etc/rsyslog.d/.

Символ «& ~» представляет собой правило перенаправления и используется для указания демону rsyslog прекратить дальнейшую обработку сообщений журнала и не записывать их локально. Его нужно только записать в указанный файл или сервер.Если это правило перенаправления не используется, все удаленные сообщения будут записываться в локальный файл журнала в дополнение к файлу журнала, описанному выше, что означает, что журнал Сообщение было фактически написано несколько раз. Такие как:. @IP & ~

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

перезапустить rsyslog

Все обновления rsyslog требуют перезапуска rsyslog, включая операцию :wq после изменения rsyslog.conf, иначе rsyslog больше нельзя будет использовать.

centos7系统:
systemctl restart rsyslog.service
ubuntu或centos6:
service rsyslog restart

пересылка службы laravel

Сам Laravel поддерживает логирование в rsyslog, но для этого нужно запустить настройку.После того, как конфигурация syslog запущена, ее можно логировать в журнал rsyslog, и rsyslog будет автоматически ее мониторить. Если журнал изменится, он будет перенаправлен на сервер журналов.

laravel配置

Окончательный результат, отправленный на лог-сервер, показан на рисунке:

最终结果