
oxygen-icons.orgããã®ç»å
ææŠãã
ãã°ãã¡ã€ã«ãäžå€®ãµãŒããŒã«è»¢éããŸãã
- ãµãŒããŒãå©çšã§ããªãå Žåãã¡ãã»ãŒãžã倱ãããšã¯ãããŸãããããããã¯ãŒã¯ã«è¡šç€ºããããšãã«ã¡ãã»ãŒãžãèç©ããŠéä¿¡ããŸãã
- è€æ°è¡ã¡ãã»ãŒãžãæ£ããéä¿¡ããŸãã
- æ°ãããã°ãã¡ã€ã«ã衚瀺ãããããã¯ã©ã€ã¢ã³ããåæ§æããã ãã§ååã§ããµãŒããŒã®æ§æã倿Žããå¿
èŠã¯ãããŸããã
- ãã³ãã¬ãŒãã«å¯Ÿå¿ããååãæã€ãã¹ãŠã®ãã°ãã¡ã€ã«ã®ã³ã³ãã³ãã転éã§ããŸãããµãŒããŒäžã®ã³ã³ãã³ãã¯ãåãååã®ãã¡ã€ã«ã«åå¥ã«ä¿åãããŸãã
æ¡ä»¶ïŒã€ã³ãã©ã¹ãã©ã¯ãã£ã§ã¯LinuxãµãŒããŒã®ã¿ã䜿çšãããŸãã
ãœãããŠã§ã¢ã®éžæ
ãšã©ã¹ãã£ãã¯ããŒããlogstashãsystemd-journal-remoteãããã³ããå€ãã®åªãããã¯ãããžãŒãããå ŽåãsyslogãµãŒããŒãå¿
èŠãªã®ã¯ãªãã§ããïŒ
- ããã¯ãPOSIXäºæã·ã¹ãã ã«ãã°ã€ã³ããããã®æšæºã§ãã
haproxyãªã©ã®äžéšã®ãœãããŠã§ã¢ã¯ãããã®ã¿ã䜿çšããŸãã ã€ãŸãããšã«ããsyslogãå®å
šã«åãé€ãããšã¯ã§ããŸãã - ãããã¯ãŒã¯ããŒããŠã§ã¢ã䜿çšããŸã
- èšå®ã¯å°é£ã§ãããä»ã®ãœãªã¥ãŒã·ã§ã³ãããæ©èœãè±å¯ã§ãã
ããšãã°ãElastic Filebeatã¯ãŸã inotifyã®æ¹æ³ãç¥ããŸããã - ã¡ã¢ãªã«è² æ
ãããããŸããã å°ã調æŽããåŸãçµã¿èŸŒã¿ã·ã¹ãã ã§äœ¿çšããããšãå¯èœã§ã ã
- ä¿å/転éããåã«ã¡ãã»ãŒãžã倿Žã§ããŸãã
å¥åŠãªã¿ã¹ã¯ã§ãããæã«ã¯å¿
èŠã§ãã ããšãã°ãã»ã¯ã·ã§ã³3.4ã®PCI DSSã§ã¯ãã«ãŒãçªå·ããã£ã¹ã¯ã«ä¿åããå Žåãã«ãŒãçªå·ããã¹ãã³ã°ãŸãã¯æå·åããå¿
èŠããããŸãã 埮åŠãªç¹ã¯ã誰ããæ€çŽ¢ããŒãŸãã¯ãã£ãŒãããã¯ãã©ãŒã ã«ã«ãŒãçªå·ãå
¥åããå Žåããªã¯ãšã¹ãããã°ã«ä¿åãããšããã«æšæºãç Žãããšã«ãªããŸãã
èŠ³å¯ ïŒãŠãŒã¶ãŒã¯ããŒãžäžã®ä»»æã®å
¥åãã£ãŒã«ãã«ã«ãŒãçªå·ãå
¥åããããšããCVVãšãšãã«ãµããŒãã«éç¥ããããåªããŸãã
TLDRïŒãã¹ãŠãæªãSyslogã¯80幎代ã«ç»å Žããããã«Unixã©ã€ã¯ãªã·ã¹ãã ããããã¯ãŒã¯æ©åšãžã®ãã®ã³ã°ã®æšæºã«ãªããŸããã èŠæ Œã¯ãªãã誰ããæ¢åã®ãœãããŠã§ã¢ãšã®äºææ§ã®ååã«ã€ããŠæžããŠããŸãã 2001幎ã«ãIETFã¯RFC 3164ïŒãæ
å ±ãã¹ããŒã¿ã¹ïŒã®çŸç¶ã説æããŸããã ç¹ã«å®è£
ã¯éåžžã«ç°ãªãããããã®ããã¥ã¡ã³ãã§ã¯ãUDPããŒã514ã«éä¿¡ãããIPãã±ããã®å
容ã¯syslogã¡ãã»ãŒãžãšèŠãªãããã¹ãã§ãããšè¿°ã¹ãŠããŸãã æ¬¡ã«ãRFC 3195ã§åœ¢åŒãæšæºåããããšããŸããããããã¥ã¡ã³ãã¯æåããªãã£ãããšã倿ããŸãããçŸæç¹ã§ã¯ãåäžã®ã©ã€ãå®è£
ã¯ãããŸããã 2009幎ã«ã圌ãã¯RFC 5424ãæ¡çšããŸãããRFC5424ã¯æ§é åã¡ãã»ãŒãžãå®çŸ©ããŸãããããã¯ã ããã»ãšãã©äœ¿çšããŸããã
ããã§ã¯ãrsyslogã®èè
ã§ããRainer Gerhardsãããã«ã€ããŠèããŠããããšãèªãããšãã§ããŸãã å®éããã¹ãŠã®äººããšã«ããsyslogãå®è£
ããŠããããã®å€æ§æ§ããã¹ãŠè§£éããã¿ã¹ã¯ã¯syslogãµãŒããŒã«ãããŸãã ããšãã°ãrsyslogã«ã¯ãCISCO IOSã§äœ¿çšããã圢åŒãè§£æããããã®ç¹å¥ãªã¢ãžã¥ãŒã«ãå«ãŸããŠããŸããææªã®å Žåã5çªç®ã®ããŒãžã§ã³ãããç¬èªã®ããŒãµãŒãå®çŸ©ã§ããŸãã
ãããã¯ãŒã¯çµç±ã§éä¿¡ãããsyslogã¡ãã»ãŒãžã¯æ¬¡ã®ããã«ãªããŸãã
<PRI> TIMESTAMP HOST TAG MSG
PRI
åªå
é äœã facility * 8 + severity
ãšããŠèšç®ãããŸãã
- ãã¡ã·ãªãã£ïŒã«ããŽãªïŒã¯0ãã23ãŸã§ã®å€ãåããã·ã¹ãã ãµãŒãã¹ã®ããŸããŸãªã«ããŽãªã«å¯Ÿå¿ããŸãïŒ0-ã«ãŒãã«ã2-ã¡ãŒã«ã7-ãã¥ãŒã¹ã æåŸã®8-local0ããlocal7ãŸã§-ã¯ãäºåå®çŸ©ãããã«ããŽãªãŒã«åé¡ãããªããµãŒãã¹ã«å¯ŸããŠå®çŸ©ãããŸãã å
šãªã¹ã ã
- é倧床ïŒéèŠåºŠïŒã¯ã0ïŒç·æ¥ãæé«ïŒãã7ïŒãããã°ãæäœïŒãŸã§ã®å€ãåããŸãã å
šãªã¹ã ã
TIMESTAMP
æå»ãéåžžã¯ãFeb 6 18:45:01ãã®åœ¢åŒã§ãã RFC 3164ã«ããã°ãISO 8601æé圢åŒã§èšé²ããããšãã§ããŸãïŒ "2017-02-06T18ïŒ45ïŒ01.519832 + 03ïŒ00"ããæ£ç¢ºã§ã䜿çšãããã¿ã€ã ãŸãŒã³ãèæ
®ããŸããHOST
ã¡ãã»ãŒãžãçæãããã¹ãã®ååTAG
ã¡ãã»ãŒãžãçæããããã°ã©ã ã®ååãå«ãŸããŸãã å®éã«ã¯å€ãã®å®è£
ã§ããã«å€ãã®æåã䜿çšã§ããŸããã32æå以äžã®è±æ°åã§ãã è±æ°å以å€ã®æåã¯ãã¹ãŠTAGã§çµãããMSGã§å§ãŸããŸããéåžžã¯ã³ãã³ã䜿çšããŸãã è§æ¬åŒ§å
ã«ãã¡ãã»ãŒãžãçæããããã»ã¹ã®çªå·ãå«ãŸããããšããããŸãã [ ]
ã¯è±æ°åã§ã¯ãªããããããã»ã¹çªå·ãšäžç·ã«ããã»ã¹çªå·ãã¡ãã»ãŒãžã®äžéšãšèŠãªãå¿
èŠããããŸãã ããããéåžžããã¹ãŠã®å®è£
ã¯ãããã¿ã°ã®äžéšãšèŠãªãããïŒãæå以éã®ãã¹ãŠãã¡ãã»ãŒãžãšããŠèæ
®ããŸãMSG
ã¡ãã»ãŒãžã ã¿ã°ã®çµäºäœçœ®ãšã¡ãã»ãŒãžã®éå§äœçœ®ãäžç¢ºå®ã§ãããããå
é ã«ã¹ããŒã¹ã远å ãããå ŽåããããŸãã æ¹è¡æåãå«ããããšã¯ã§ããŸããããããã¯ãã¬ãŒã åºåãæåã§ãããæ°ããã¡ãã»ãŒãžãéå§ããŸãã è€æ°è¡ã¡ãã»ãŒãžã転éããæ¹æ³ïŒ
- ã·ãŒã«ãã åä¿¡åŽã§æ¹è¡ã®ä»£ããã«
#012
ããã¹ããååŸããŸã - TLS察å¿syslogã®RFC 5425ã§å®çŸ©ãããŠãããªã¯ãããã«ãŠã³ãTCPãã¬ãŒãã³ã°ã®äœ¿çšã éæšæºãäžéšã®å®è£
ã®ã¿ã
syslogãããã³ã«ã®ä»£æ¿ïŒRELP
åçŽãªTCP sysogã®ä»£ããã«rsyslogã䜿çšããŠãã¹ãéã§ã¡ãã»ãŒãžã転éãããå Žåã RELP -Reliable Event Logging Protocolã䜿çšã§ããŸãã rsyslogçšã«äœæãããŸããããçŸåšã¯ä»ã®ããã€ãã®ã·ã¹ãã ã§ãµããŒããããŠããŸãã ç¹ã«ã圌ã¯LogstashãšGraylogã«çè§£ãããŠããŸãã ãã©ã³ã¹ããŒãã«ã¯TCPã䜿çšããŸãã ãªãã·ã§ã³ã§ãTLSã䜿çšããŠã¡ãã»ãŒãžãæå·åã§ããŸãã ãã¬ãŒã³ãªTCP syslogãããä¿¡é Œæ§ãé«ããæ¥ç¶ãåæããããšãã«ã¡ãã»ãŒãžã倱ãããšã¯ãããŸããã è€æ°è¡ã¡ãã»ãŒãžã§åé¡ã解決ããŸãã
Rsyslogã®æ§æ
2çªç®ã®äžè¬çãªä»£æ¿ã§ããsyslog-ngãšã¯ç°ãªããrsyslogã¯æŽå²çãªsyslogdæ§æãšäºææ§ããããŸãã
auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none /var/log/syslog *.* @syslog.example.net
rsyslogã®æ©èœã¯ä»¥åã®æ©èœãããã¯ããã«å€§ããããã $
èšå·ã§å§ãŸã远å ã®ãã£ã¬ã¯ãã£ãã䜿çšããŠãæ§æåœ¢åŒãæ¡åŒµãããŸããã
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $WorkDirectory /var/spool/rsyslog $IncludeConfig /etc/rsyslog.d/*.conf
6çªç®ã®ããŒãžã§ã³ãããsiã«äŒŒãRainerScript圢åŒãç»å Žããã¡ãã»ãŒãžåŠçã®è€éãªã«ãŒã«ãèšå®ã§ããããã«ãªããŸããã
ãããã¯ãã¹ãŠåŸã
ã«è¡ãããå€ãæ§æãšã®äºææ§ãèæ
®ããŠè¡ããããããæçµçã«ã¯ããã€ãã®äžå¿«ãªç¬éã倿ããŸããã
- äžéšã®ãã©ã°ã€ã³ïŒãŸã ãã®ãããªãã©ã°ã€ã³ã«ã¯ééããŠããŸããïŒã¯ãæ°ããRainerScriptã¹ã¿ã€ã«ã®èšå®ããµããŒãããŠããªãå¯èœæ§ããããŸãããå€ããã£ã¬ã¯ãã£ããå¿
èŠã§ã
- å€ããã£ã¬ã¯ãã£ãã䜿çšããæ§æã¯ãæ°ãã圢åŒã§ã¯åžžã«æåŸ
ã©ããã«æ©èœãããšã¯éããŸããã
omfile
ãå€ã圢åŒã䜿çšããŠåŒã³åºãããå ŽåïŒ
auth,authpriv.* /var/log/auth.log
å Žåãçµæã®ãã¡ã€ã«ã®ææè
ãšããŒããã·ã§ã³ã¯ãå€ãæä»€$FileOwner
ã $FileGroup
ã $FileCreateMode
ã«ãã£ãŠç®¡çãããŸãã ãã ãã action(type="omfile" ...)
ã䜿çšããŠåŒã³åºãããå Žåããããã®ãã£ã¬ã¯ãã£ãã¯ç¡èŠãããã¢ã¯ã·ã§ã³ãã©ã¡ãŒã¿ãŒãèšå®ããããã¢ãžã¥ãŒã«ã®ããŒãæã«èšå®ããå¿
èŠããããŸãã$ActionQueueXXX
ãšãã圢åŒã®ãã£ã¬ã¯ãã£ãã¯ããã®åŸã®æåã®ã¢ã¯ã·ã§ã³ã§äœ¿çšããããã¥ãŒã®ã¿ãæ§æããå€ã¯ãªã»ãããããŸãã
- ã»ãã³ãã³ã¯ã©ããã§çŠæ¢ãããŠããŸããããã®éã¯å¿
é ã§ãïŒ2çªç®ã«å°ãªãé »åºŠïŒ
ãããã®åŸ®åŠãªç¹ã«ã€ãŸãããªãããã«ïŒããããããã¯ããã¥ã¡ã³ãã§èª¬æãããŠããŸããã誰ããã¹ãŠãèªãã§ããŸããïŒïŒãç°¡åãªã«ãŒã«ã«åŸãã¹ãã§ãïŒ
- å°ããªã·ã³ãã«ãªèšå®ã«ã¯ãå€ã圢åŒã䜿çšããŸãã
:programname, startswith, "haproxy" /var/log/haproxy.log
- è€éãªã¡ãã»ãŒãžåŠçãšã¢ã¯ã·ã§ã³ã®åŸ®èª¿æŽã®ããã«ã
$DoSomething
ãããªã¬ã¬ã·ãŒãã£ã¬ã¯ãã£ãã«è§ŠããããšãªãRainerScriptãåžžã«äœ¿çšããŸã
èšå®åœ¢åŒã®è©³çްã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
ã¡ãã»ãŒãžåŠç
- ãã¹ãŠã®ã¡ãã»ãŒãžã¯Inputããéä¿¡ããïŒå€ãã®å ŽåããããŸãïŒãããã«æ·»ä»ãããŠããRuleSetã«åŠçãããŸãã ãããæç€ºçã«èšå®ãããŠããªãå Žåãã¡ãã»ãŒãžã¯ããã©ã«ãã§RuleSetã«éãããŸãã å¥ã®RuleSetãããã¯ã«é
眮ãããŠããªããã¹ãŠã®ã¡ãã»ãŒãžåŠçãã£ã¬ã¯ãã£ãã¯ãããã«é¢é£ããŠããŸãã ç¹ã«ãåŸæ¥ã®æ§æåœ¢åŒã®ãã¹ãŠã®ãã£ã¬ã¯ãã£ããå«ãŸããŠããŸãã
local7.* /var/log/myapp/my.log
- ã¡ãã»ãŒãžãè§£æããããã®ããŒãµãŒã®ãªã¹ããå
¥åã«æ·»ä»ãããŸãã æç€ºçã«æå®ãããŠããªãå ŽåãããŒãµãŒã®ãªã¹ãã䜿çšããŠãåŸæ¥ã®syslog圢åŒãè§£æããŸã
- ããŒãµãŒã¯ã¡ãã»ãŒãžããããããã£ãæœåºããŸãã æã䜿çšãããïŒ
$msg
ã¡ãã»ãŒãž$rawmsg
ããŒãµãŒã«ããåŠçåã®ã¡ãã»ãŒãžå
šäœ$fromhost
ã $fromhost-ip
éä¿¡ãã¹ãã®DNSåãšIPã¢ãã¬ã¹$syslogfacility
ã $syslogfacility-text
æ°å€ããã³ããã¹ã圢åŒã®æ©èœ$syslogseverity
ã $syslogseverity-text
é倧床ãåã$timereported
ã¡ãã»ãŒãžããã®æé$syslogtag
-TAGãã£ãŒã«ã$programname
ã«ãããªãããã»ã¹IDã®TAGãã£ãŒã«ãïŒ named[12345]
-> named
- ãªã¹ãå
šäœã¯ãã¡ãã«ãããŸã
- RuleSetã«ã¯ã«ãŒã«ã®ãªã¹ããå«ãŸããã«ãŒã«ã¯ãã£ã«ã¿ãŒãšããã«ãã€ã³ãããã1ã€ä»¥äžã®ã¢ã¯ã·ã§ã³ã§æ§æãããŸã
- ãã£ã«ã¿ã¯ãã¡ãã»ãŒãžããããã£ã䜿çšããè«çåŒã§ãã ãã£ã«ã¿ãŒã®è©³çް
- ã«ãŒã«ã¯RuleSetã«å
¥ã£ãã¡ãã»ãŒãžã«é çªã«é©çšãããã¡ãã»ãŒãžã¯æåã«ããªã¬ãŒãããã«ãŒã«ã§åæ¢ããŸãã
- ã¡ãã»ãŒãžã®åŠçã忢ããã«ã¯ãç¹å¥ãªå»æ£ã¢ã¯ã·ã§ã³ã䜿çšã§ããŸãïŒã¬ã¬ã·ãŒåœ¢åŒã®
stop
ãŸãã¯~
ã - ãã³ãã¬ãŒãã¯ãå€ãã®å Žåãã¢ã¯ã·ã§ã³å
ã§äœ¿çšãããŸãã ãã³ãã¬ãŒãã䜿çšãããšããããã¯ãŒã¯çµç±ã§éä¿¡ããããã®ã¡ãã»ãŒãžåœ¢åŒããèšé²ããããã®ãã¡ã€ã«åãªã©ãã¡ãã»ãŒãžããããã£ããã¢ã¯ã·ã§ã³ã«éä¿¡ããããã®ããŒã¿ãçæã§ããŸãã ãã³ãã¬ãŒãã®è©³çް
- éåžžãã¢ã¯ã·ã§ã³ã¯åºåã¢ãžã¥ãŒã«ïŒãom ...ãïŒãŸãã¯ã¡ãã»ãŒãžå€æŽã¢ãžã¥ãŒã«ïŒãmm ...ãïŒã䜿çšããŸãã ãããã®ããã€ããæ¬¡ã«ç€ºããŸãã
â ã¡ãã»ãŒãžåŠçã®è©³çް
æ§æäŸ
ã«ããŽãªauthããã³authprivã®ãã¹ãŠã®ã¡ãã»ãŒãžã/var/log/auth.log
ãã¡ã€ã«ã«æžã蟌ã¿ãåŠçãç¶è¡ããŸãã
# legacy auth,authpriv.* /var/log/auth.log # if ( $syslogfacility-text == "auth" or $syslogfacility-text == "authpriv" ) then { action(type="omfile" file="/var/log/auth.log") }
ãhaproxyãã§å§ãŸãããã°ã©ã åãæã€ãã¹ãŠã®ã¡ãã»ãŒãžã¯ãåã¡ãã»ãŒãžãæžã蟌ãŸããåŸããããã¡ããã£ã¹ã¯ã«ãã©ãã·ã¥ããã«/var/log/haproxy.log
ãã¡ã€ã«ã«æžã蟌ãŸããããã«åŠçã忢ããŸãã
# legacy ( , ) :programname, startswith, "haproxy", -/var/log/haproxy.log & ~ # if ( $programname startswith "haproxy" ) then { action(type="omfile" file="/var/log/haproxy.log" flushOnTXEnd="off") stop } # if $programname startswith "haproxy" then -/var/log/haproxy.log &~
rsyslogd -N 1
ãã§ãã¯ïŒ rsyslogd -N 1
ãã®ä»ã®æ§æäŸïŒ one ã two ã
ã¯ã©ã€ã¢ã³ãïŒãã¡ã€ã«åãä¿åããŠãã°ã転éãã
TAG
ãã£ãŒã«ãã«ãã¡ã€ã«åãä¿åããŸãã ãã¡ã€ã«ã®åäžã¬ãã«ã®æ£ä¹±haproxy/error.log
ã芳å¯ããªãããã«ãååã«ãã£ã¬ã¯ããªãå«ãããã§ãã ãã°ããã¡ã€ã«ããã§ã¯ãªããããã°ã©ã ããsyslogã«éä¿¡ãããã¡ãã»ãŒãžããèªã¿åãããå Žåãæšæºã«æºæ ããŠããªããããTAGã«/
èšå·ãæžã蟌ãããšã«åæããªãå ŽåããããŸãã ãããã£ãŠãããããäºéã¢ã³ããŒã¹ã³ã¢ã§ãšã³ã³ãŒããããã°ãµãŒããŒã§è§£æããŸãã
ãããã¯ãŒã¯çµç±ã§ãã°ã転éããããã®ãã³ãã¬ãŒããäœæããŸãã 32æåïŒãã°åãé·ãïŒããé·ãã¿ã°ãæã€ã¡ãã»ãŒãžãéä¿¡ããã¿ã€ã ãŸãŒã³ãç€ºãæšæºã®ã¿ã€ã ã¹ã¿ã³ããããæ£ç¢ºãªã¡ãã»ãŒãžãéä¿¡ããå¿
èŠããããŸãã ããã«ãããŒã«ã«å€æ°$.suffix
ããã°ãã¡ã€ã«ã®ååã«è¿œå ãããåŸã§ãã®çç±ãæããã«ãªããŸãã RainerScriptã®ããŒã«ã«å€æ°ã¯ããªãªãã§å§ãŸããŸãã 倿°ãå®çŸ©ãããŠããªãå Žåãç©ºã®æååã«å±éãããŸãã
template (name="LongTagForwardFormat" type="string" string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%$.suffix%%msg:::sp-if-no-1st-sp%%msg%")
次ã«ããããã¯ãŒã¯çµç±ã§ãã°ãéä¿¡ããããã«äœ¿çšãããRuleSetãäœæããŸãã å
¥åã«æ·»ä»ãããããã¡ã€ã«ãèªã¿èŸŒãã ãã颿°ãšããŠåŒã³åºãããšãã§ããŸãã ã¯ããrsyslogã§ã¯ã1ã€ã®RuleSetãå¥ã®RuleSetããåŒã³åºãããšãã§ããŸãã RELPã䜿çšããã«ã¯ããŸãé©åãªã¢ãžã¥ãŒã«ãããŠã³ããŒãããå¿
èŠããããŸãã
次ã«ããã°ãã¡ã€ã«ãèªã¿åãå
¥åãäœæãããã®RuleSetãããã«æ·»ä»ããŸãã
input(type="imfile" File="/var/log/myapp/my.log" Tag="myapp/my.log" Ruleset="sendToLogserver")
èªã¿åããã¡ã€ã«ããšã«ãrsyslogã¯ãã®äœæ¥ãã£ã¬ã¯ããªïŒ $WorkDirectory
ãã£ã¬ã¯ãã£ãã§èšå®ïŒã«ç¶æ
ãã¡ã€ã«ãäœæããããšã«æ³šæããŠãã ããã rsyslogãããã«ãã¡ã€ã«ãäœæã§ããªãå Žåãrsyslogã®åèµ·ååŸã«ãã°ãã¡ã€ã«å
šäœãåéä¿¡ãããŸãã
ç¹å®ã®ã¿ã°ã䜿çšããŠäžè¬çãªsyslogã«ã¢ããªã±ãŒã·ã§ã³ãæžã蟌ã¿ãè¡ããããããã¡ã€ã«ã«ä¿åããŠãããã¯ãŒã¯çµç±ã§éä¿¡ããå ŽåïŒ
# Template to output only message template(name="OnlyMsg" type="string" string="%msg:::drop-last-lf%\n") if( $syslogtag == 'nginx__access:') then { # write to file action(type="omfile" file="/var/log/nginx/access" template="OnlyMsg") # forward over network call sendToLogserver stop }
ãããã®ã¡ãã»ãŒãžã®åŠçã忢stop
ãæåŸã®stop
å¿
èŠã§ããããããªããšãäžè¬çãªsyslogã«åé¡ãããŸãã ã¡ãªã¿ã«ãã¢ããªã±ãŒã·ã§ã³ãæšæº/dev/log
ïŒnginxãšhaproxyããããè¡ãããšãã§ããŸãïŒã«å ããŠãsyslogã«å¥ã®Unixãœã±ãããéžæã§ããå Žåã imuxsockã¢ãžã¥ãŒã«ã䜿çšãããšãäžè¬ããã®ãã°ãåæããã«ããã®ãœã±ããã«åå¥ã®å
¥åãäœæããå¿
èŠãªRuleSetãã¢ã¿ããã§ããŸãã¿ã°ã«ãããããŒã
ã¯ã€ã«ãã«ãŒããä»ããŠæå®ããããã°ãã¡ã€ã«ã®èªã¿åã
éå¥
ããã°ã©ããŒïŒãã°ãµãŒããŒã§å
æã®åãã®somevendor.logãã°ãèŠã€ããããšãã§ããŸãããplizãåç
§ããŠãã ããã
DevopsïŒãããš...æ¬åœã«ãã®ãããªãã°ãæžãã®ã§ããããïŒ èŠåããå¿
èŠããããŸãã ãããã«ããã1é±é以äžçµéããŠãããã®ã¯ãã¹ãŠlogrotateã倱ã£ãŠããŸããä¿åããªããšãããã¯ããæå³ããããŸããã
ããã°ã©ããŒïŒ æ¿æ
ã¢ããªã±ãŒã·ã§ã³ãå€ãã®ç°ãªããã°ãæžã蟌ã¿ãæã
æ°ãããã°ã衚瀺ãããå Žåãæ¯åèšå®ãæŽæ°ããã®ã¯äžäŸ¿ã§ãã ãããèªååãããã imfileã¢ãžã¥ãŒã«ã¯ãã¯ã€ã«ãã«ãŒãã§æå®ããããã¡ã€ã«ãèªã¿åãããã¡ã€ã«ãã¹ãã¡ãã»ãŒãžã¡ã¿ããŒã¿ã«ä¿åã§ããŸãã 確ãã«ããã¹ã¯å®å
šãªãŸãŸã§ãããããããååŸããå¿
èŠãããæåŸã®ã³ã³ããŒãã³ãã®ã¿ãå¿
èŠã§ãã ãšããã§ãããã§ã¯å€æ°$.suffix
input(type="imfile" File="/srv/myapp/logs/*.log" Tag="myapp__" Ruleset="myapp_logs" addMetadata="on") ruleset(name="myapp_logs") {
ã¯ã€ã«ãã«ãŒãã¯ãimfile inotify
ã¢ãŒãã§ã®ã¿ãµããŒããããŸãïŒããã¯ããã©ã«ãã¢ãŒãã§ãïŒã ããŒãžã§ã³8.25.0以éããã¡ã€ã«åãšãã¹ã®äž¡æ¹ã§ã¯ã€ã«ãã«ãŒãããµããŒããããŠããŸãïŒ/ var / log / / .logã
è€æ°è¡ã¡ãã»ãŒãž
è€æ°è¡ã¡ãã»ãŒãžãå«ããã°ãã¡ã€ã«ãæäœããããã«ãimfileã¢ãžã¥ãŒã«ã«ã¯3ã€ã®ãªãã·ã§ã³ããããŸãã
readMode=1
ã¡ãã»ãŒãžã¯ç©ºã®æååã§åºåãããŸãreadMode=2
æ°ããã¡ãã»ãŒãžã¯è¡ã®å
é ããå§ãŸããã¡ãã»ãŒãžã®ç¶ç¶ã¯ã€ã³ãã³ããããŸãã Stektraysã¯ãã°ãã°ãã®ããã«èŠããŸãstartmsg.regex
-regexpïŒPOSIX ExtendedïŒã«ãã£ãŠæ°ããã¡ãã»ãŒãžã®éå§ã決å®ããŸã
æåã®2ã€ã®ãªãã·ã§ã³ã«ã¯ãæäœã®inotify
ã¢ãŒãã§åé¡ããããå¿
èŠã«å¿ããŠã3çªç®ã®ãªãã·ã§ã³ã¯å¯Ÿå¿ããæ£èŠè¡šçŸã«ç°¡åã«çœ®ãæããããŸãã è€æ°è¡ã®ãã°ã®èªã¿åãã«ã¯ã埮åŠãªç¹ã1ã€ãããŸãã éåžžãæ°ããã¡ãã»ãŒãžã®å
åã¯æåã«ãããæ¬¡ã®ã¡ãã»ãŒãžãå§ãŸããŸã§ããã°ã©ã ãæåŸã®ã¡ãã»ãŒãžã®æžã蟌ã¿ãçµäºããããšã確èªããããšã¯ã§ããŸããã ãã®ãããæåŸã®ã¡ãã»ãŒãžãéä¿¡ãããããšã¯ãããŸããã ãããåé¿ããããã«ã readTimeout
ãèšå®ããŸãããã®åŸãã¡ãã»ãŒãžã¯å®äºãããšèŠãªãããéä¿¡ãããŸãã
input(type="imfile" File="/var/log/mysql/mysql-slow.log"
ãµãŒããŒ
ãµãŒããŒäžã§ãéä¿¡ããããã°ãåãå
¥ããéä¿¡ãã¹ãã®IPãšåä¿¡æéã«åŸã£ãŠãã£ã¬ã¯ããªã«åé¡ããå¿
èŠããããŸãïŒ /srv/log/192.168.0.1/2017-02-06/myapp/my.log
ã¡ãã»ãŒãžã®å
容ã«å¿ããŠãã°ãã¡ã€ã«åãèšå®ããããã«ããã³ãã¬ãŒãã䜿çšããããšãã§ããŸãã ãã³ãã¬ãŒãã䜿çšããåã«ã $.logpath
倿°ã$.logpath
å
ã«èšå®ããå¿
èŠããããŸãã
template(name="RemoteLogSavePath" type="list") { constant(value="/srv/log/") property(name="fromhost-ip") constant(value="/") property(name="timegenerated" dateFormat="year") constant(value="-") property(name="timegenerated" dateFormat="month") constant(value="-") property(name="timegenerated" dateFormat="day") constant(value="/") property(name="$.logpath" ) }
å¿
èŠãªã¢ãžã¥ãŒã«ãããŒãããŠ$EscapeControlCharactersOnReceive
ãªãã«ããŸããããããªããšãåä¿¡ãããã°ã§ãã¹ãŠã®æ¹è¡ã\n
眮ãæããããŸã
ããã§ãåä¿¡ãã°ãè§£æããŠãããããã©ã«ããŒã«é
眮ããRuleSetãäœæããŸãã ãã®ã³ã°ãsyslogã®ã¿ã«äŸåãããµãŒãã¹ã¯ãã¡ãã»ãŒãžæéã®ç¯çŽãæåŸ
ããŠããŸãã ãããã£ãŠãæšæºãã¡ã·ãªãã£ã§å°çãããã°ãsyslog圢åŒã§ä¿åãããã¡ã·ãªãã£local0-local7ã§å°çãããã°ã«ã€ããŠã¯ã TAG
ãã£ãŒã«ããããã°åãååŸããsyslogãã£ãŒã«ããæ®ããã«ã¡ãã»ãŒãžèªäœã®ã¿ãèšé²ããŸãã ã¡ãã»ãŒãžã«è²Œãä»ããããã¹ããŒã¹ã®åé¡ã¯ãRELPã«æ®ããŸããããã¯ãã¡ãã»ãŒãžã®è§£ææ®µéã§çºçããããããã®ã®ã£ãããåæžããŸãã
ããã©ãŒãã³ã¹ãåäžãããããã«ãéåæçã«èšè¿°ããŸãïŒ asyncWriting="on"
ãšå€§ããªãããã¡ãŒioBufferSize=64k
ãŸãã ã¡ãã»ãŒãžãåä¿¡ããflushOnTXEnd="off"
åŸflushOnTXEnd="off"
ãããã¡ãŒãflushOnTXEnd="off"
ãŸãããããã°ãµãŒããŒã«ãã°ãéåžžã«è¿
éã«è¡šç€ºãããããã«ã1ç§ããšã«ãããè¡ããŸãïŒ flushInterval="1"
ã
ruleset(name="RemoteLogProcess") { # For facilities local0-7 set log filename from $programname field: replace __ with / # Message has arbitary format, syslog fields are not used if ( $syslogfacility >= 16 ) then { # Remove 1st space from message. Syslog protocol legacy action(type="mmrm1stspace") set $.logpath = replace($programname, "__", "/"); action(type="omfile" dynaFileCacheSize="1024" dynaFile="RemoteLogSavePath" template="OnlyMsg" flushOnTXEnd="off" asyncWriting="on" flushInterval="1" ioBufferSize="64k") # Logs with filename defined from facility # Message has syslog format, syslog fields are used } else { if (($syslogfacility == 0)) then { set $.logpath = "kern"; } else if (($syslogfacility == 4) or ($syslogfacility == 10)) then { set $.logpath = "auth"; } else if (($syslogfacility == 9) or ($syslogfacility == 15)) then { set $.logpath = "cron"; } else { set $.logpath ="syslog"; } # Built-in template RSYSLOG_FileFormat: High-precision timestamps and timezone information action(type="omfile" dynaFileCacheSize="1024" dynaFile="RemoteLogSavePath" template="RSYSLOG_FileFormat" flushOnTXEnd="off" asyncWriting="on" flushInterval="1" ioBufferSize="64k") } } # ruleset
ä¿¡é Œã§ããã¡ãã»ãŒãžé
ä¿¡ã ãã¥ãŒ

k-max.nameããã°ã®ç»å
äžéšã®ã¢ã¯ã·ã§ã³ã§ã¯ããããã¯ãŒã¯çµç±ã§ãã°ãéä¿¡ããããããŒã¿ããŒã¹ã«æžã蟌ãã ããããªã©ãå®è¡ãé
ããªã£ãããäžæåæ¢ãããããããšããããŸãã ã¡ãã»ãŒãžã倱ããæ¬¡ã®ã¢ã¯ã·ã§ã³ã«å¹²æžããªãããã«ããããã«ã ãã¥ãŒã䜿çšã§ããŸã ã åã¢ã¯ã·ã§ã³ã«ã¯åžžã«ã¡ãã»ãŒãžãã¥ãŒãå²ãåœãŠãããŸããããã©ã«ãã§ã¯ããµã€ãºã¯ãŒãã®ãã€ã¬ã¯ããã¥ãŒã§ãã ãã¹ãŠã®å
¥åã¡ãã»ãŒãžããåä¿¡ããã¡ãã»ãŒãžã®ã¡ã€ã³ãã¥ãŒã¯ãŸã ãããŸãããèšå®ããããšãã§ããŸãã
ãã¥ãŒã®çš®é¡ïŒãã£ã¹ã¯ãã¡ã¢ãªãããã³æãè峿·±ããªãã·ã§ã³ã¯ããã£ã¹ã¯ã¢ã·ã¹ãã¡ã¢ãªãã¥ãŒãçµã¿åããããã®ã§ãã ãã®ãããªãã¥ãŒã¯ã¡ã¢ãªã䜿çšããã¡ã¢ãªå
ã®ãã¥ãŒããã£ã±ãã®å ŽåããŸãã¯ãµãŒãã¹ã®ãªããŒãæã«æªéä¿¡ã¡ãã»ãŒãžãä¿åããå¿
èŠãããå Žåããã£ã¹ã¯ã®äœ¿çšãéå§ããŸãã ã¡ãã»ãŒãžã¯ããã¥ãŒå
ã®ã¡ãã»ãŒãžã®æ°ãqueue.highwatermark
ã«éãããšãã£ã¹ã¯ã«æžã蟌ãŸãå§ãããã®æ°ãqueue.lowwatermark
äžãããšãã£ã¹ã¯ãžã®ä¿åã忢ãããŸãã ãµãŒãã¹ã®ããªããŒãäžã«æªéä¿¡ã¡ãã»ãŒãžããã£ã¹ã¯ã«ä¿åããã«ã¯ã queue.saveonshutdown="on"
æå®ããå¿
èŠããããŸãã
ãããã¯ãŒã¯ãä»ãããã°ã®éä¿¡ãŸãã¯ããŒã¿ããŒã¹ãžã®æžã蟌ã¿ã倱æããå Žåãã¢ã¯ã·ã§ã³ã¯äžæãããŸãã rsyslogã¯ã詊è¡ããšã«å¢å ããç¹å®ã®ééã§Actionã®åéã詊ã¿ãŸãã åé¡ã解決ããåŸããã«ãã°ã転éããã«ã¯ã action.resumeRetryCount="-1"
ïŒç¡å¶éïŒãšãã¥ãŒã忢ããééãaction.resumeInterval="10"
ã«èšå®ããå¿
èŠããããŸãã ã¢ã¯ã·ã§ã³ãã©ã¡ãŒã¿ã®è©³çްãã芧ãã ãã ã
ãã¥ãŒãæã€ã¯ã©ã€ã¢ã³ãã®RuleSetã¯æ¬¡ã®ããã«ãªããŸãã
ruleset(name="sendToLogserver") {
ããã§ããã°ãµãŒããŒãå®å
šã«ãªããŒãã§ããŸããã¡ãã»ãŒãžã¯ãã¥ãŒã«ä¿åãããå©çšå¯èœã«ãªã£ããšãã«éä¿¡ãããŸãã
泚æïŒãããã¯ãŒã¯ã®åŸ©å
åŸã«ãã¥ãŒããã¡ãã»ãŒãžãéä¿¡ããå Žåããããã®çžå¯Ÿçãªé åºã«éåããå¯èœæ§ããããŸãïŒã³ã¡ã³ãã®zystemã«æè¬ããŸã ïŒã rsyslogã®äœæè
ã¯ãããã¯äºæ³ãããåäœã§ãããšçããŸããã詳现ã«ã€ããŠã¯ã http ïŒ //www.gerhards.net/download/LinuxKongress2010rsyslog.pdfãåç
§ããŠãã ãã ïŒã»ã¯ã·ã§ã³7ãåæå®è¡é¢é£ã®æé©åãïŒã èŠããã«ããã«ãã¹ã¬ãããã¥ãŒåŠçã§ã¡ãã»ãŒãžã®é åºãå³å¯ã«ç¶æããããšãããšãã¹ã¬ããããããã³ã°ãå¿
èŠã«ãªããããããã©ãŒãã³ã¹ãäœäžããŸãã å³å¯ãªã¡ãã»ãŒãžã·ãŒã±ã³ã¹ã®æŠå¿µã¯ãäžéšã®ã¿ã€ãã®ãã©ã³ã¹ããŒãããã«ãã¹ã¬ãããžã§ãã¬ãŒã¿ãããã³ã¡ãã»ãŒãžã¬ã·ãŒãã§ã¯æå³ããªããªãå ŽåããããŸãã
èé害æ§
åã®ã¢ã¯ã·ã§ã³ãäžæåæ¢ãããå Žåã«ã®ã¿å®è¡ããããã«ã¢ã¯ã·ã§ã³ãæ§æã§ããŸãïŒ description ã ããã«ããããã§ãŒã«ãªãŒããŒæ§æãæ§æã§ããŸãã äžéšã®ã¢ã¯ã·ã§ã³ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã䜿çšããŠããã©ãŒãã³ã¹ãåäžãããŸãã ãã®å ŽåãæåãŸãã¯å€±æã¯ãã¡ãã»ãŒãžããã§ã«åŠçãããŠããå Žåããã©ã³ã¶ã¯ã·ã§ã³ãå®äºããåŸã«ã®ã¿èªèãããŸãã ããã«ããããã§ãŒã«ãªãŒããŒã¢ã¯ã·ã§ã³ãåŒã³åºããã«äžéšã®ã¡ãã»ãŒãžã倱ãããå¯èœæ§ããããŸãã ãããé²ãã«ã¯ããã©ã¡ãŒã¿queue.dequeuebatchsize="1"
ïŒããã©ã«ãã§ã¯16ïŒãèšå®ããå¿
èŠããããŸããããã«ãããããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã
ruleset(name="sendToLogserver") { action(type="omrelp" Target="syslog1.example.net" Port="20514" Template="LongTagForwardFormat") action(type="omrelp" Target="syslog2.example.net" Port="20514" Template="LongTagForwardFormat" action.execOnlyWhenPreviousIsSuspended="on" queue.dequeuebatchsize="1") }
å®çšŒåç°å¢ã§ã¯ãã®æ©èœããŸã 詊ããŠããŸããã
Logrotateã€ã³ã¿ã©ã¯ã·ã§ã³
rsyslogèªäœã«ãã£ãŠæžã蟌ãŸãããã°
smth.log
ãããã©ã«ãã®ã¹ããŒã ã䜿çšããŠsmth.log
ããŸãsmth.log
倿Žãããæ°ããsmth.log
ãäœæãããŸãã å転åŸã®ã¢ã¯ã·ã§ã³ã§ã¯ãSIGHUPãrsyslogdããã»ã¹ã«éä¿¡ããå¿
èŠããããŸãã : rsyslog SIGHUP, -.
/var/log/someapp/*.log{ weekly missingok rotate 5 create 0644 syslog adm sharedscripts postrotate test -s run/rsyslogd.pid && kill -HUP $(cat /run/rsyslogd.pid)
, rsyslog
, (SIGHUP - ), . rsyslog inode .
logrotate copytruncate
, smth.log
smth.log.1
. rsyslog ( , ). 8.16.0, imfile
reopenOnTruncate
(- "off"
, "on"
). rsyslog (inode , ). "", . 8.16.0, copytruncate
SIGHUP rsyslogd post-rotate action.
: Debian/Ubuntu logrotate , â . /etc/cron.daily/logrotate
.
ãŸãšã
. , syslog. . - . , .
rsyslog v8, . Ubuntu ppa adiscon/v8-stable . CentOS/RHEL .
PS
UPD: , zystem .
UPD2: logrotate.