Am o mașină client care își trimite fișierele jurnal către un server central rsyslog. Pot vedea jurnalele de pe serverul central syslog aici:
root@server:/var/log# ls -al /var/log/client/
total 1952
drwxr-xr-x 2 syslog syslog 4096 19 iunie 07:06 .
drwxrwxr-x 14 root syslog 4096 19 iunie 10:26 ..
-rw-r----- 1 syslog adm 324895 19 iunie 16:02 auth.log
-rw-r----- 1 syslog adm 31787 19 iunie 15:17 authpriv.log
-rw-r----- 1 syslog adm 3859 19 iunie 15:17 cron.log
-rw-r----- 1 syslog adm 96770 19 iunie 15:38 daemon.log
-rw-r----- 1 syslog adm 1475044 19 iunie 16:03 kern.log
-rw-r----- 1 syslog adm 11019 19 iunie 12:50 local0.log
-rw-r----- 1 syslog adm 15883 19 iunie 12:49 syslog.log
-rw-r----- 1 syslog adm 1688 19 iunie 07:16 user.log
Cel mai mult sunt interesat de local0.log.
Am configurat serverul central rsyslog pentru a trimite jurnalele către logstash:
root@server:/etc/rsyslog.d# cat /etc/rsyslog.d/70-output.conf
template(name="json-template"
tip="listă") {
constant(valoare="{")
constant(value="\"@timestamp\":\"") proprietate(name="timereported" dateFormat="rfc3339")
constant(valoare="\",\"@versiunea\":\"1")
constant(value="\",\"message\":\"") proprietate(name="msg" format="json")
constant(value="\",\"sysloghost\":\"") proprietate(nume="nume gazdă")
constant(value="\",\"severity\":\"") proprietate(name="syslogseverity-text")
constant(value="\",\"facility\":\"") proprietate(name="syslogfacility-text")
constant(value="\",\"programname\":\"") proprietate(name="programname")
constant(value="\",\"procid\":\"") proprietate(name="procid")
constant(valoare="\"}\n")
}
*.* action(type="omfwd" target="localhost" port="10514" protocol="udp" template="json-template")
Logstash este configurat pentru a trimite jurnalele către elasticsearch:
root@server:/etc/rsyslog.d# cat /etc/logstash/conf.d/logstash.conf
intrare {
tcp {
gazdă => "127.0.0.1"
port => 10514
codec => "json"
tip => "rsyslog"
}
}
filtru { }
ieșire {
dacă [tip] == „rsyslog” {
elasticsearch {
gazde => [ "127.0.0.1:9200" ]
}
}
}
Văd că elasticsearch are acum jurnalele:
root@server:/etc/rsyslog.d# curl -XGET 'http://localhost:9200/logstash-*/_search?q=*&pretty'
{
"a luat": 4,
"timed_out": fals,
...
"hituri": [
{
"_index" : "logstash-2021.06.19-000001",
"_type" : "_doc",
"_id" : "3YxQJHoBrZHyFIavQWQZ",
„_score” : 1,0,
"_sursă" : {
"message" : " [20468.211706] [UFW BLOCK] IN=eth0 OUT= MAC=<snip> SRC=<snip> DST=<snip> LEN=40 TOS=0x00 PREC=0x00 TTL=245 ID=15690 PROTO=TCP SPT=43024 DPT=6780 WINDOW=1024 RES=0x00 SYN URGP=0 ",
...
Cu toate acestea, se pare că doar unele dintre fișierele jurnal sunt redirecționate către logstash (sau logstash nu le redirecționează către elasticsearch).
Privind toate jurnalele din elasticsearch (sau din kibana) pot vedea /var/log/client/local0.log
este complet ignorat.
Există vreo modalitate de a forța acest fișier jurnal să fie inclus? Cum pot depana acest lucru?
Mulțumiri!