WOWZA 使用 NXLog CE 記錄傳送到 Graylog
BUBU 因公司有使用串流主機服務,但想要把這個串流主機服務轉送到 Graylog 上做保存日後有需求以方便查詢,那有詢問過代理說目前系統並沒有這樣子機制,所以需要用其他方式來轉送到 Graylog 上,那剛好之前 BUBU 的 IIS LOG 是用 NXLog 套件來做傳送。
運行環境
本工作室環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式
- 系統環境:Debian 11
安裝過程
首先到官方 NXLog CE 先下載安裝檔
- 下載安裝套件
wget https://nxlog.co/system/files/products/files/348/nxlog-ce_3.1.2319_debian11_amd64.deb
- 安裝 NXLog
dpkg -i nxlog-ce_3.1.2319_debian11_amd64.deb
- 在安裝過程中會警告說有兩個套件無法安裝需要手動安裝
dpkg: dependency problems prevent configuration of nxlog-ce:
nxlog-ce depends on libapr1 (>= 1.4.8-2~); however:
Package libapr1 is not installed.
nxlog-ce depends on libdbi1 (>= 0.9.0); however:
Package libdbi1 is not installed.
- 如出現以上訊息請下這個指令,系統就會安裝相依套件這樣子 NXLog 就可以正常運行了
apt --fix-broken install
- 安裝完之後再進到
cd /etc/nxlog
目錄下編輯nxlog.conf
或者先複製一份原預設值再來編輯,再將下方的內容填入到該設定檔裡
## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally under
## /usr/share/doc/nxlog-ce/ and is also available online at
## http://nxlog.org/docs
########################################
# Global directives #
########################################
User nxlog
Group nxlog
include /etc/nxlog/nxlog.d/*.conf
LogFile /var/log/nxlog/nxlog.log
LogLevel INFO
########################################
# Modules #
########################################
# 載入相關模組
<Extension gelf>
Module xm_gelf
</Extension>
<Extension json>
Module xm_json
</Extension>
# 這是設定 CSV
<Extension wowza_acc>
Module xm_csv
# 先查看來源檔是否有表頭
Fields $date, $time, $tz, $x-event, $x-category, $x-severity, $x-status, $x-ctx, $x-comment, $x-vhost, $x-app, $x-appinst, $x-duration, $s-ip, $s-port, $s-uri, $c-ip, $c-proto, $c-referrer, $c-user-agent, $c-client-id, $cs-bytes, $sc-bytes, $x-stream-id, $x-spos, $cs-stream-bytes, $sc-stream-bytes, $x-sname, $x-sname-query, $x-file-name, $x-file-ext, $x-file-size, $x-file-length, $x-suri, $x-suri-stem, $x-suri-query, $cs-uri-stem, $cs-uri-query
Delimiter \t
QuoteChar '"'
EscapeControl TRUE
UndefValue -
</Extension>
<Extension wowza_err>
Module xm_csv
Fields $x-severity, $x-category, $x-event, $date, $time, $c-client-id, $c-ip, $c-port, $cs-bytes, $sc-bytes, $x-duration, $x-sname, $x-stream-id, $x-spos, $sc-stream-bytes, $cs-stream-bytes, $x-file-size, $x-file-length, $x-ctx, $x-comment
Delimiter \t
QuoteChar '"'
EscapeControl TRUE
UndefValue -
</Extension>
# 字型轉換
<Extension charconv>
Module xm_charconv
AutodetectCharsets utf-8, utf-16, utf-32, iso8859-2, windows-1252
</Extension>
# 資料來源
<Input wowza_acc_in>
Module im_file
File '/usr/local/WowzaStreamingEngine/logs/wowzastreamingengine_access.log'
ReadFromLast FALSE
<Exec>
# 忽略以#開頭的日誌行
if $raw_event =~ /^#/ drop();
else
{
convert_fields("windows-1252", "utf-8");
# 解析為CSV格式
# 通過xm_csv模塊對WOWZA日誌進行解析
wowza_acc->parse_csv();
$raw_event = replace($raw_event, ' ', "\t");
}
</Exec>
</Input>
<Input wowza_err_in>
Module im_file
File '/usr/local/WowzaStreamingEngine/logs/wowzastreamingengine_error.log'
ReadFromLast FALSE
<Exec>
if $raw_event =~ /^#/ drop();
else
{
convert_fields("windows-1252", "utf-8");
wowza_acc->parse_csv();
$raw_event = replace($raw_event, ' ', "\t");
}
</Exec>
</Input>
<Output wowza_acc_to_graylog>
Module om_udp
Host log伺服器位置
Port 12520
OutputType GELF
</Output>
<Output wowza_err_to_graylog>
Module om_udp
Host log伺服器位置
Port 12521
OutputType GELF
</Output>
########################################
# Routes #
########################################
<Route 1>
Path wowza_acc_in => wowza_acc_to_graylog
</Route>
<Route 2>
Path wowza_err_in => wowza_err_to_graylog
</Route>
Graylog 設定
- 先設定要接收的的格式及 Port 號
- 照圖示說明設定
- 在 rsyslog 設定檔裡增加要接收的 port 號,重啟服務之後就可以去看
log
主機是否有正常收到資料