這邊想要實現nginx透過rsyslog將Log傳送給ELK做分析
目前機器配置為
172.16.16.111 ngnix
172.16.16.86 ELK
《nginx 172.16.16.111》
只操作了單獨配置nginx的config設定檔
配置 syslog:server=172.16.16.86:10514;
《ELK 172.16.16.86》
先是修改了rsyslog.conf檔案,將註解拿掉
然後啟動rsys.conf的相關進程
啟動logstash的config檔案,進行log的接收
因為Google很多資料,一路走到這邊來了,還是接收不到東西,想問問是不是自己還漏了什麼部分,也很感謝「raytracy」一路指引我到這邊來
最近也在用syslog相關的軟體。
請問大大的 nginx 到 elk tcp/udp 的514 port 連線,有建立起來嗎?
有
您上面的測試用telnet,只能確認到 tcp 514port的通的。
您接收log 看起來是 udp 的 10514。
您可看看,當兩端的服務都起來後,在兩端用
netstat -na | more 看看是否有連到 udp 10514 的session。
172.16.16.111 被我玩壞,現在改成172.16.16.102
udp 有連到 172.16.16.86:10514
但是tcp沒有
172.16.16.86端
您的連線狀態,看起來是正常,TCP沒有也是正常(TCP要也有的話,可能就是農曆七月到了XD)
在rsyslog.conf中,有一段是設定遠端連結過來時,要收檔案相關的設定,大概是長這樣
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~
您再去看看,這個部份的設定。
rsyslog 需要設定的地方不多,差不多就是這些,下面的連結您可以參考看看...
大哥您好 ~
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
是要修改成$template RemoteLogs,"/var/log/172.16.16.102/access.log" *
嗎?
順便一問,.102的nginx端,應該不需要配置任何rsyslog相關吧
是否只要配置access.log syslog:server=172.16.16.86:10514;
就能將access.log傳遞給.86端,對吧?
目前是在.86端做rsysylog.conf配置
嗯,還是接收不到訊息
%HOSTNAME%/%PROGRAMNAME%
這邊應該指的是,自訂路徑和檔名,要實際存在的。
目前也在水深火熱之中...晚點再仔細看您上面的留言。
這邊還是先謝謝您,我也有把它修改成.102的實際路徑試試看 (有點無果)
我有參考了「CentOS 7搭建Rsyslong集中式日志系统」
確實是有將log都傳到被接收端了,但就會有兩個問題,並不是我要的功能
我懷疑是 udp6 在搞鬼,跟修改成udp,也一樣 (排除)
關閉防火牆,直接解決