2016-08-08 3 views
0

Ich installierte syslog-ng mit "yum install syslog-ng" sowohl auf der lokalen Maschine als auch auf dem Server. Ich verwende eine Open-Source-Version von syslog-ng.syslog-ng-Problem beim Taggen zum Server

Mein Bedarf besteht darin, den Protokolldateinamen von Client zu Serverende zu übergeben. Ich habe die Datei .SDATA.file bei 18372.4.name auf meiner Clientseite explizit festgelegt, da der Name der Datei im $ FILE_NAME-Makro verfügbar ist. Aber ".SDATA.file bei 18372.4.name" ist in Serverseite leer. Wenn ich einen statischen Dateinamen verwende, arbeitet das Protokoll.

Unten ist mein Code Ich weiß nicht, wo ich falsch liege Wenn Sie mehr Informationen benötigen, kann ich Ihnen helfen, mir kann jemand helfen.

MY CLIENT END SYSLOG-NG CODE: 
source s_application_logs { 
    file( 
     "/var/log/test.log" 
     flags(no-parse) 
    ); 
}; 

destination d_access_system { 
    syslog( 
      "52.38.34.160" 
      transport("tcp") 
      port(6514) 
    ); 
}; 

rewrite r_set_filename { 
    set(
     "$FILE_NAME", 
     value(".SDATA.file at 18372.4.name") 
    ); 
}; 

rewrite r_rename_filename { 
    subst(
     "/var/log/", 
     "", 
     value(".SDATA.file at 18372.4.name") 
     type("string") 
     flags("prefix") 
     ); 
}; 

log { 
    source(s_application_logs); 
    rewrite(r_set_filename); 
    rewrite(r_rename_filename); 
    destination(d_access_system); 
}; 



MY SERVER END SYSLOG-NG CODE: 
source s_server_end { 
       syslog(
        port(6514) 
        max_connections(1000) 
        keep_hostname(yes) 
        ); 
}; 

destination d_log_files { 
    file(
     "/var/log/test/${.SDATA.file at 18372.4.name}" 
     create_dirs(yes) 
    ); 
}; 

log {source(s_server_end);destination(d_log_files);}; 

Antwort

1

Das Problem ist, dass der $ FILE_NAME Makro nur in der kommerziellen Version von syslog-ng zur Zeit verfügbar ist. Eine mögliche Problemumgehung finden Sie in diesem Blogpost: Forwarding filenames with syslog-ng

Verwandte Themen