Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг в rsyslog 
:(
    Опции темы
zett86
Дата 24.9.2013, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.9.2013

Репутация: нет
Всего: нет



Привет, ребята.

Чем парсить в rsyslog?
Вот кусок конфига и суть:

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

И вот создаю темплейт:
Код

$template dukuy, "insert into DUKUY (datestamp, tagsave, error, sessionid, guid, message)
 values (%datestamp%, %tagsave%, %error%, %sessionid%, %guid%, %message%)",SQL

local4.*  :ommysql:localhost,database,logger,p@s$w0rd;dukuy


Создаю фильтр local4.* и привязываю к нему темплейт.

Логи приходят в таком формате:

Код

DIKIY-ROMAN Test: 2013-09-23 15:38:46^LIST_ED^2^seesion^{00000000-0000-0000-0000-000000000000}^Test message


где ^ - разделитель.

Вот как-то нуна распарсить строку с разделителем и засунуть под темплейт.

Кто-то что-то подобное делал?  smile 


Это сообщение отредактировал(а) zett86 - 27.9.2013, 16:14
PM MAIL   Вверх
krypt3r
Дата 25.9.2013, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 1
Всего: 16



perl?
PM MAIL   Вверх
zett86
Дата 25.9.2013, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.9.2013

Репутация: нет
Всего: нет



Вариант. Как?

То есть как подключить перловый скрипт к сислогу?
И как примерно написать скрипт? Как распарсить понимаю.. а вот как принять из сислога (сислог -?> перл -?> сислог) строку и как вернуть в сислог?  smile 
PM MAIL   Вверх
krypt3r
Дата 25.9.2013, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 1
Всего: 16



Будучи близко не знакомым с rsyslog, я предложил простейшее решение парсить приходящие логи перловым скриптом  smile 
PM MAIL   Вверх
zett86
Дата 25.9.2013, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.9.2013

Репутация: нет
Всего: нет



1. Может как-то еще можно это реализовать базовыми средствами? Может можно как-то регекспами в темплейтах?  
По сути надо как-то распарсить %msg% в шаблоне. Кто-то с таким сталкивался? smile

2. Или как это можно решить с помощью внешнего скрипта на perl?  smile 
Вот так я пытаюсь вызвать свой скрипт из rsyslog'a:
Код

$template dukuy, "%msg%"

if $syslogfacility-text contains 'local4' then ^/home/zett/scripts/local4.pl;dukuy


Сам скрипт пока простой:
Код

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

my $log = "log/local4.log";
system "touch",  "$log" unless -f $log;

open LOG, ">", "$log"  or die "$0: Can't open file $log :: $!\n";

print LOG "@ARGV\n";


Я просто пытаюсь им создать лог-файл если его нет и выписать туда полученные параметры. Но, увы... ни файла ни параметров......
Если запустить скрипт руками, то файл создается и параметры там есть:

Код

linux-testserver:/home/zett/scripts # ./local4.pl test script
linux-testserver:/home/zett/scripts # cat log/local4.log 
test script


То есть проблемы с вызовом...:

Код

linux-testserver:/home/zett/scripts # logger -p local4.err '2013-09-25 14:49:56^LIST_ED^2^seesion^{00000000-0000-0000-0000-000000000000}^Test message'
linux-testserver:/home/zett/scripts # cat log/local4.log 
cat: log/local4.log: No such file or directory


P.S.  smile 

Это сообщение отредактировал(а) zett86 - 26.9.2013, 10:48
PM MAIL   Вверх
zett86
Дата 26.9.2013, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.9.2013

Репутация: нет
Всего: нет



Короч решилось через парсинг на уровне шаблона в rsyslog.conf.

Могу рассказать как, если кому интересно..  smile 
В общем получаем строку
Код

logger -p local4.err '2013-09-25 14:49:56^LIST_ED^2^session^{00000000-0000-0000-0000-000000000000}^Test message'


Ее нужно распарсить по разделителю '^'

Сделать это можно на уровне шаблона rsyslog'a так..

Создаем шаблон:
Код

$template dukuy1,"insert into dukuytest (datestamp, tagsave, error, sessionid, guid, message) values 
('%msg:R,ERE,1,DFLT:([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)--end%', 
'%msg:R,ERE,2,DFLT:([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)--end%', 
'%msg:R,ERE,3,DFLT:([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)--end%', 
'%msg:R,ERE,4,DFLT:([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)--end%', 
'%msg:R,ERE,5,DFLT:([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)--end%', 
'%msg:R,ERE,6,DFLT:([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)--end%')",SQL

(таблица тут кастомная..)

Создаем событие:
Код

local4.*  :ommysql:localhost,database,username,p@s$w0rd;dukuy1


И так эта регулярка парсит строку по разделителю '^'.. Давайте посмотрим что оно значит..  smile 
Код

%msg:R,ERE,1,DFLT:([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)\^([^\^]+)--end%
msg - переменная с сообщением, это и так понятно..;
:R,ERE,1,DFLT:
R - так и не понял что значит, но оно тут как бы надо..; 
ERE - Extended Regular Expressions; 
1 - это самое интересное  :crazy , номер совпадения; 
DFLT - схема, сам толком не понял какая между ними разница.

Ну а дальше сама регулярка которая просто ищет любые символы кроме '^' до этого же символа и вносит все найденое под номер от 1 до 6.. 


Но есть ограничение связанное с номером совпадения, максимум можно находить 9 совпадений.. 
Мне такое не подходит, так как прийдется парсить строки и на 10 и на 14 и больше подстрок... 
Так что скорей всего еще буду переделывать скриптами, так удобнее менеджить проекты.. 
так что вопрос о скриптах остается пока в силе..  smile 

Это сообщение отредактировал(а) zett86 - 27.9.2013, 11:45
PM MAIL   Вверх
zett86
Дата 30.9.2013, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.9.2013

Репутация: нет
Всего: нет



Ну что, никто никогда скрипты к RSysLog'у не потключал?..  smile 
PM MAIL   Вверх
vitalyisaev2
Дата 30.9.2013, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



Может cron'ом их запустить? 

Либо написать небольшой event-based демон с асинхронным вводом-выводом, который будет мониторить изменение логов и делать всё, что тебе надо smile 
PM MAIL   Вверх
zett86
Дата 30.9.2013, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.9.2013

Репутация: нет
Всего: нет



cron не вариант ) ну а мониторить что?.. нуна хватать логи перед записью, парсить и складывать в мускуль..  smile 
PM MAIL   Вверх
zett86
Дата 21.10.2013, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.9.2013

Репутация: нет
Всего: нет



Вопрос все еще открыт..  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Администрирование"
ZeeLax
Imple
nerezus
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.

  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование *NIX систем | Следующая тема »


 




[ Время генерации скрипта: 0.0782 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.