從splunkforwarder轉(zhuǎn)發(fā)日志到syslog服務(wù)器

從sponsor那里收到了一個很奇怪的需求,客戶需要用splunk的fowarder將日志同時輸出到syslog服務(wù)器中,而且不能用別的forwarder,所以我提出的用Fluentd就被否定了。領(lǐng)導(dǎo)命令大于天,雖然syslog沒用過,但是也只能硬著頭皮上了。

在slack channel里面問了下,大神們紛紛表示沒做過,但是splunk的文檔指出heavy forwarder可能可以同時將日志發(fā)給第三方的日志服務(wù)器比如syslog server。理論上來說分兩步:

  1. universal splunk fowarder變?yōu)?code>heavy forwarder,并重啟服務(wù),文檔在此
  2. 在SplunkForwarder的outputs.conf添加對應(yīng)的配置文件,文檔在此

接下來就是得去驗(yàn)證這些配置是否正確,簡單來講就是啟動一個splunk服務(wù)器和一個syslog服務(wù)器,然后把把任意的splunk收集的日志轉(zhuǎn)發(fā)給syslog服務(wù)器。

OK,首先找了兩個合適的docker image,寫在一個docker-compose文件中,減少配置修改的成本,同時方便通信。

version: '2'
services:
  splunk:
    image: dmaxwell/splunk
    container_name: splunk
    ports:
      - "8000:8000"
      - "9997:9997"
      - "8088:8088"
      - "1514:1514"
    links:
        - syslog:syslog 
  syslog:
    image: voxxit/rsyslog

docker-compose up -d啟動,訪問localhost:8000可以先更改下admin的密碼。其次attach到splunk的container上面,做下面的操作:

1: 測試能否以tcp的方式連接到syslog服務(wù)器, looks good.

docker-compose exec splunk bash

root@003b513bb0f7:/# telnet syslog 514
Trying 172.26.0.2...
Connected to syslog.
Escape character is '^]'.

2 : 將universal splunkfowarder變成heavy splunkfowarder:

/opt/splunk/bin/splunk enable app SplunkForwarder -auth admin:password

#重啟splunk服務(wù)
 /opt/splunk/bin/splunk restart

3: 在splunkforwarder配置文件opt/splunk/etc/apps/SplunkForwarder/default/outputs.conf中添加下面的內(nèi)容:

[syslog]
defaultGroup=syslogGroup

[syslog:syslogGroup]
server = syslog:514

因?yàn)槭莝pike,所以沒有過濾日志內(nèi)容。很慫的又重啟了一次 -_-!

4: 登陸到syslog服務(wù)器上,看不太懂/etc/rsyslog.conf內(nèi)容,不過tail了下/var/log/messages,哇塞竟然看到來自splunk的日志了。

所以從splunkforwarder發(fā)送日志到syslog服務(wù)器是沒有問題的,文檔誠不欺我。但是怎么把它保存到不同的,我不禁陷入了沉思, hmm......。

顯然沉思沒有文檔有用-_-! 在這里發(fā)現(xiàn)似乎可以通過過濾消息內(nèi)容來將日志保存在其它文件中。
比如像這樣把下面的配置加到/etc/rsyslog.conf中,目的是將包含splunk字符串的日志都過濾到另外一個文件中。

:msg, contains, "splunk"   action(type="omfile" file="/var/log/splunk.log")

反復(fù)測試后,又成功了……,yeah!

但是這種粗暴的方式很容易把無關(guān)的日志也保存到一起,如果可以通過某種方式可以鑒別日志的來源或者格式來過濾會不會更好些?從日志format上來區(qū)分的方式嘗試沒有成功,但是通過給遠(yuǎn)程主機(jī)來定制一個模板方式成功了。比如像下面這樣在/etc/rsyslog.d/加一個splunk.conf文件,內(nèi)容如下:

## preserve sending host fqdn
$PreserveFQDN on
#
# Receive outside syslog
$template RemoteHost, "/var/log/%HOSTNAME%/1.log"
$RuleSet remote
*.* ?RemoteHost

#Listeners
$InputTCPServerBindRuleset remote
$InputTCPServerRun 5144

這里我讓syslog監(jiān)聽另外一個端口,對應(yīng)的也需要在splunk的outputs.conf中添加新的syslog server配置。各種重啟之后成功的看到了不斷更新的/var/log/splunk.splunk_default/1.log日志文件。
基本上一個初步的解決方案應(yīng)該已經(jīng)形成了,簡單的閱讀了rsyslog文檔,了解下配置,差不多就是這樣了,畢竟好像有s/1hours/3hours/g沒有給老婆打電話了,docker-compose down,然后瑟瑟發(fā)抖的拿起了電話……。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 日志管理Rsyslog [TOC] 背景 有一個4臺機(jī)器的分布式服務(wù),不多不少,上每臺機(jī)器上查看日志比較麻煩,用F...
    ferret閱讀 31,801評論 0 6
  • 1 概述 系統(tǒng)日志是記錄系統(tǒng)中硬件、軟件和系統(tǒng)問題的信息,同時還可以監(jiān)視系統(tǒng)中發(fā)生的事件。用戶可以通過它來檢查錯誤...
    ghbsunny閱讀 4,203評論 0 0
  • 統(tǒng)計(jì)著孩子們的日記和趣配音快一周時間了,為一直堅(jiān)持的孩子們和爸媽們點(diǎn)贊!每天特期待小班長的日記,這孩子的寫作能力超...
    李宇航媽媽閱讀 103評論 0 0
  • 我知道為什么貓咪看上去那么可愛了,原來,貓的眼睛面積,相對于貓臉的面積比例,遠(yuǎn)遠(yuǎn)高于人類,類似日本漫畫中的蘿莉那種...
    每周微課閱讀 3,433評論 0 3

友情鏈接更多精彩內(nèi)容