oxygen-icons.orgããã®ç»å
ææŠãã
ãã°ãã¡ã€ã«ãäžå€®ãµãŒããŒã«è»¢éããŸãã
- ãµãŒããŒãå©çšã§ããªãå Žåãã¡ãã»ãŒãžã倱ãããšã¯ãããŸãããããããã¯ãŒã¯ã«è¡šç€ºããããšãã«ã¡ãã»ãŒãžãèç©ããŠéä¿¡ããŸãã
- è€æ°è¡ã¡ãã»ãŒãžãæ£ããéä¿¡ããŸãã
- æ°ãããã°ãã¡ã€ã«ã衚瀺ãããããã¯ã©ã€ã¢ã³ããåæ§æããã ãã§ååã§ããµãŒããŒã®æ§æãå€æŽããå¿ èŠã¯ãããŸããã
- ãã³ãã¬ãŒãã«å¯Ÿå¿ããååãæã€ãã¹ãŠã®ãã°ãã¡ã€ã«ã®ã³ã³ãã³ãã転éã§ããŸãããµãŒããŒäžã®ã³ã³ãã³ãã¯ãåãååã®ãã¡ã€ã«ã«åå¥ã«ä¿åãããŸãã
æ¡ä»¶ïŒã€ã³ãã©ã¹ãã©ã¯ãã£ã§ã¯LinuxãµãŒããŒã®ã¿ã䜿çšãããŸãã
- ææŠãã
- ãœãããŠã§ã¢ã®éžæ
- ã¡ãã»ãŒãžåœ¢åŒãšã¬ã¬ã·ãŒ
- Rsyslogã®æ§æ
- ã¡ãã»ãŒãžåŠç
- æ§æäŸ
- ã¯ã©ã€ã¢ã³ãïŒãã¡ã€ã«åãä¿åããŠãã°ã転éãã
- ãµãŒããŒ
- ä¿¡é Œã§ããã¡ãã»ãŒãžé ä¿¡ã ãã¥ãŒ
- èé害æ§
- Logrotateã€ã³ã¿ã©ã¯ã·ã§ã³
- ãŸãšã
ãœãããŠã§ã¢ã®éžæ
ãšã©ã¹ãã£ãã¯ããŒããlogstashãsystemd-journal-remoteãããã³ããå€ãã®åªãããã¯ãããžãŒãããå ŽåãsyslogãµãŒããŒãå¿ èŠãªã®ã¯ãªãã§ããïŒ
- ããã¯ãPOSIXäºæã·ã¹ãã ã«ãã°ã€ã³ããããã®æšæºã§ãã
haproxyãªã©ã®äžéšã®ãœãããŠã§ã¢ã¯ãããã®ã¿ã䜿çšããŸãã ã€ãŸãããšã«ããsyslogãå®å šã«åãé€ãããšã¯ã§ããŸãã - ãããã¯ãŒã¯ããŒããŠã§ã¢ã䜿çšããŸã
- èšå®ã¯å°é£ã§ãããä»ã®ãœãªã¥ãŒã·ã§ã³ãããæ©èœãè±å¯ã§ãã
ããšãã°ãElastic Filebeatã¯ãŸã inotifyã®æ¹æ³ãç¥ããŸããã - ã¡ã¢ãªã«è² æ ãããããŸããã å°ã調æŽããåŸãçµã¿èŸŒã¿ã·ã¹ãã ã§äœ¿çšããããšãå¯èœã§ã ã
- ä¿å/転éããåã«ã¡ãã»ãŒãžãå€æŽã§ããŸãã
å¥åŠãªã¿ã¹ã¯ã§ãããæã«ã¯å¿ èŠã§ãã ããšãã°ãã»ã¯ã·ã§ã³3.4ã®PCI DSSã§ã¯ãã«ãŒãçªå·ããã£ã¹ã¯ã«ä¿åããå Žåãã«ãŒãçªå·ããã¹ãã³ã°ãŸãã¯æå·åããå¿ èŠããããŸãã 埮åŠãªç¹ã¯ã誰ããæ€çŽ¢ããŒãŸãã¯ãã£ãŒãããã¯ãã©ãŒã ã«ã«ãŒãçªå·ãå ¥åããå Žåããªã¯ãšã¹ãããã°ã«ä¿åãããšããã«æšæºãç Žãããšã«ãªããŸãã
èŠ³å¯ ïŒãŠãŒã¶ãŒã¯ããŒãžäžã®ä»»æã®å ¥åãã£ãŒã«ãã«ã«ãŒãçªå·ãå ¥åããããšããCVVãšãšãã«ãµããŒãã«éç¥ããããåªããŸãã
ã¡ãã»ãŒãžåœ¢åŒãšã¬ã¬ã·ãŒ
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 ...ãïŒã䜿çšããŸãã ãããã®ããã€ãã次ã«ç€ºããŸãã
- omfile-ãã¡ã€ã«ãžã®åºå
- omfwd -udpãŸãã¯tcpãä»ãããããã¯ãŒã¯çµç±ã®è»¢é
- omrelp -RELPãããã³ã«ãä»ãããããã¯ãŒã¯è»¢é
- onmysql ã ompgsql ã omoracle-ããŒã¿ããŒã¹ãžã®æžã蟌ã¿
- omelasticsearch - ElasticSearchã®ãšã³ããª
- omamqp1 -AMQP 1.0転é
- åºåã¢ãžã¥ãŒã«ã®å šãªã¹ã
â ã¡ãã»ãŒãžåŠçã®è©³çŽ°
æ§æäŸ
ã«ããŽãª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ã䜿çšããã«ã¯ããŸãé©åãªã¢ãžã¥ãŒã«ãããŠã³ããŒãããå¿ èŠããããŸãã
# http://www.rsyslog.com/doc/relp.html module(load="omrelp") ruleset(name="sendToLogserver") { action(type="omrelp" Target="syslog.example.net" Port="20514" Template="LongTagForwardFormat") }
次ã«ããã°ãã¡ã€ã«ãèªã¿åãå ¥åãäœæãããã®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") { # http://www.rsyslog.com/doc/v8-stable/rainerscript/functions.html # re_extract(expr, re, match, submatch, no-found) set $.suffix=re_extract($!metadata!filename, "(.*)/([^/]*)", 0, 2, "all.log"); call sendToLogserver }
ã¯ã€ã«ãã«ãŒãã¯ã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" # http://blog.gerhards.net/2013/09/imfile-multi-line-messages.html startmsg.regex="^# Time: [0-9]{6}" readTimeout="2" # no need to escape new line for RELP escapeLF="off" Tag=" mysql__slow.log" Ruleset="sendToLogserver")
ãµãŒããŒ
ãµãŒããŒäžã§ãéä¿¡ããããã°ãåãå
¥ããéä¿¡ãã¹ãã®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
眮ãæããããŸã
# Accept RELP messages from network module(load="imrelp") input(type="imrelp" port="20514" ruleset="RemoteLogProcess") # Default parameters for file output. Old-style global settings are not working with new-style actions module(load="builtin:omfile" FileOwner="syslog" FileGroup="adm" dirOwner="syslog" dirGroup="adm" FileCreateMode="0640" DirCreateMode="0755") # Module to remove 1st space from message module(load="mmrm1stspace") # http://www.rsyslog.com/doc/v8-stable/configuration/input_directives/rsconf1_escapecontrolcharactersonreceive.html # Print recieved LF as-it-is, not like '\n'. For multi-line messages # Default: on $EscapeControlCharactersOnReceive off
ããã§ãåä¿¡ãã°ã解æããŠãããããã©ã«ããŒã«é
眮ãã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") { # Queue: http://www.rsyslog.com/doc/v8-stable/concepts/queues.html#disk-assisted-memory-queues # Disk-Assisted Memory Queue: queue.type="LinkedList" + queue.filename # queue.size - max elements in memory # queue.highwatermark - when to start saving to disk # queue.lowwatermark - when to stop saving to disk # queue.saveonshutdown - save on disk between rsyslog shutdown # action.resumeRetryCount - number of retries for action, -1 = eternal # action.resumeInterval - interval to suspend action if destination can not be connected # After each 10 retries, the interval is extended: (numRetries / 10 + 1) * Action.ResumeInterval action(type="omrelp" Target="syslog.example.net" Port="20514" Template="LongTagForwardFormat" queue.type="LinkedList" queue.size="10000" queue.filename="q_sendToLogserver" queue.highwatermark="9000" queue.lowwatermark="50" queue.maxdiskspace="500m" queue.saveonshutdown="on" action.resumeRetryCount="-1" action.reportSuspension="on" action.reportSuspensionContinuation="on" action.resumeInterval="10") }
ããã§ããã°ãµãŒããŒãå®å šã«ãªããŒãã§ããŸããã¡ãã»ãŒãžã¯ãã¥ãŒã«ä¿åãããå©çšå¯èœã«ãªã£ããšãã«éä¿¡ãããŸãã
泚æïŒãããã¯ãŒã¯ã®åŸ©å åŸã«ãã¥ãŒããã¡ãã»ãŒãžãéä¿¡ããå Žåããããã®çžå¯Ÿçãªé åºã«éåããå¯èœæ§ããããŸãïŒã³ã¡ã³ãã®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) # postrotate script should always return 0 true endscript }
, 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 .
UPD: , zystem .
UPD2: logrotate.