Назад | Перейти на главную страницу

Как вы используете переменные patterndb в syslog-ng?

Я хотел бы разобрать несколько кастомных (сетевое устройство) файлы системного журнала для создания собственного форматированного вывода.

Поскольку я новичок в syslog-ng & patterndb, я пытался построить пример, используя документацию - моя работа до сих пор здесь: https://gist.github.com/linickx/8002981

В этом примере я хотел бы прочитать файл системного журнала (testfile.log):

Accepted password for sampleuser from 10.50.0.247 port 42156 ssh2
Accepted password for user from 10.51.0.27 port 4256 ssh2

И выведите просто список имен пользователей и IP-адресов, например:

sampleuser; 10.50.0.247;
user; 10.51.0.27;

Для анализа файла журнала я создал следующий patterndb (example.xml):

<patterndb version='4' pub_date='2010-10-17'>
    <ruleset name='ssh' id='123456678'>
        <pattern>ssh</pattern>
            <rules>
                <rule provider='me' id='182437592347598' class='system'>
                    <patterns>
                        <pattern>Accepted @ESTRING:SSH.AUTH_METHOD: @for @ESTRING:SSH_USERNAME: @from @ESTRING:SSH_CLIENT_ADDRESS: @port @NUMBER:SSH_PORT_NUMBER:@ ssh2</pattern>
                    </patterns>
                    <examples>
                        <example>
                            <test_message program="ssh">Accepted password for sampleuser from 10.50.0.247 port 42156 ssh2</test_message>
                            <test_values>
                                <test_value name="SSH.AUTH_METHOD">password</test_value>
                                <test_value name="SSH_USERNAME">sampleuser</test_value>
                                <test_value name="SSH_CLIENT_ADDRESS">10.50.0.247</test_value>
                                <test_value name="SSH_PORT_NUMBER">42156</test_value>
                            </test_values>
                       </example>
                    </examples>
                </rule>
            </rules>
    </ruleset>
</patterndb>

Однако, когда я использую переменные SSH_USERNAME и SSH_CLIENT_ADDRESS в моем syslog-ng.conf

destination test_output {
        file("/home/nick/output.log"
                template("${SSH_USERNAME}; ${SSH_CLIENT_ADDRESS}; \n")
                template_escape(no)
        );
};

- [полную версию можно увидеть в GIST] -

Выходной файл (output.log) пуст

; ;
; ;

Есть ли какая-то иерархия или особый способ использования пользовательских переменных или переменных patterndb в syslog-ng.conf, которые мне не хватает?

Заранее спасибо!