Unifi 記錄傳到 Graylog

官方的套件庫是有人提供,但是需要手動去設定

設定方式如下:

首先到 rsyslog 設定檔新增新的接收的 port 號

vim /etc/rsyslog.conf

在最後一行新增加下面的語法
*.* @127.0.0.1:5514;RSYSLOG_SyslogProtocol23Format

新增完之後存檔離開重啟服務

systemctl restart rsyslog

進到 graylog 設定服務 system 下的 inputs 

unifilog-2.png

新增加  syslog UDP 服務接收

unifilog-1.png

到 streams 新增規則

unifilog-3.png

輸入 Ubiquity Access Point logs 然後存檔

unifilog-4.png

加入則規

unifilog-5.png

新增則規

unifilog-6.png

填寫內容如下

Field:message

Type:match regular expression

Value:^.+,(.+?),.+? (.+?): (.+)$

unifilog-7.png

選擇 system >> pipelines

unifilog-8.png

新增管道

unifilog-9.png

新增項目

unifilog-10.png

建立規則

unifilog-11.png

規則內容如下

rule "parse any MAC address out of message field"
when
  has_field("message")
then
  let m = regex("([0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2})", to_string($message.message));
  
  // It's NULL if there was no match and will simply not be set internally by Graylog.
  set_field("mac_address", m["0"]);
end

unifilog-12.png

rule "parse Ubiquiti access point logs"
when
has_field("message")
then
let m = regex("^(.+),(.+?),(.+?): hostapd: (.+?): (.+?) (.+?) (.+): (.+)$", to_string($message.message));

let sname = m["0"];
let lookupsource = m["1"];
let version = m["2"];
let bssid = m["5"];
let subsystem = m["6"];
let action = m["7"];
//let clean_message = m["2"];

// Build a better source name
//set_field("source", concat("ap-", to_string(bssid)));

// Set additional fields.
set_field("type", "ubiquity-ap");
set_field("bssid", bssid);
set_field("subsystem", subsystem);
set_field("version",version);
set_field("sname", sname);
set_field("action", action);

let lookupsource = lookup("ubnt_lookup",lookupsource);
set_field("source",lookupsource);

// Set a better message field without the prefix clutter.
//set_field("message", clean_message);
end

unifilog-13.png

設定監控目標

unifilog-14.png

選擇剛剛在 Streams 裡面建麼的項目

unifilog-15.png

選擇增加剛剛的規則

unifilog-16.png

把剛剛建立的規則都加入

unifilog-17.png

 

 

參考相關網頁: