ELK Stack põhine logiserver
Sisukord
Sissejuhatus
ELK stack nimi tuleb selle komponentide esitähtedest: Elasticsearch-Logstash-Kibana. Selle näol on tegemist logiserveri lahendusega, mis pakub indekseerimist ja põhjalikke otsinguid võimaldavat veebiliidest.
ELK stack koosneb kolmest komponendist
- Logstash: mis kuulab 5000 pordil ja võtab logid serveritest vastu
- Elasticsearch: tegeleb logi salvestamise ja indekseerimisega
- Kibana: weebiliides mis võimaldab otsingu ja visualiseerimisega
_____ ELK logiserver 192.168.1.10 | | :5000/tcp |_____| :5000/udp | | -|---------|----------|----....---|-- | | | __|__ __|__ __|__ | | | | | | (logi ELKi edastavad serverid) |_____| |_____| |_____| smtp www dns
Paigaldamine gentoos
Paigaldame vajalikud paketid
# emerge app-admin/logstash-bin app-misc/elasticsearch www-apps/kibana-bin virtual/jdk
Ning seejärel java versioon paika
# java-config --set-system-vm icedtea-bin-7"
Seejärel tuleb tekitada vajalikud konfifailid
/etc/elasticsearch/logging.yml /etc/elasticsearch/elasticsearch.in.sh /etc/elasticsearch/elasticsearch.yml /etc/logstash/conf.d/agent.conf
Esimesed kolm võivad olla vaikimisi süsteemi näidetekausta paigaldatud ja muutmist ei nõua. Logstashi agent.conf konfifail võiks välja näha järgnev
input {
tcp {
port => 5000
type => syslog
}
udp {
port => 5000
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
}
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
Võimalik on inputi ahelasse defineerida ka serveri enda lokaalsed logid nt sektsiooniga
file { type => "logserver" path => [ "/var/log/syslog", "/var/log/*.log" ] }
Teenused automaatselt startima
# ln -s /etc/init.d/kibana /etc/runlevels/default/ # ln -s /etc/init.d/logstash /etc/runlevels/default/ # ln -s /etc/init.d/elasticsearch /etc/runlevels/default/
Paigaldamine Arch linuxis
Paigaldame pakihaldusest elasticsearchi ja nginxi mis hakkab olema proxyks
# pacman -S elasticsearch nginx
Auri abiutiliiti yaourti kasutades instalime logstash ja kibana. Esimene paneb ka java peale
# yaourt logstash kibana
Lubame teenuste boodil stardi
systemctl enable elasticsearch systemctl enable logstash systemctl enable kibana systemctl enable nginx
/etc/logstash/conf.d/logstash-simple.conf
input { file { path => "/var/log/faillog" start_position => beginning } tcp { port => 5000 type => syslog } udp { port => 5000 type => syslog } } output { elasticsearch { hosts => localhost } }
/etc/nginx/nginx.conf
# Nginx proxy for Elasticsearch + Kibana # server { listen 80; server_name localhost; access_log /var/log/nginx-logstash.log; #auth_basic "Restricted Access"; #auth_basic_user_file /etc/webapps/kibana/htpasswd.users; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Kliendid
Syslog
Syslog-ng puhul võib seadistada
destination loghost { udp("192.168.1.10"); }; log { source(src); filter(f_mail); destination(mail); destination(loghost); flags(final); };
Systemd journal
Systemd puhul on kõik logid nähtavad journalctl käsuga ja syslogi masinas pole. Ka pole mõtekas eraldi syslogi paigaldada kuna systemd-journal-remote ja systemd-journal-upload on systemd natiivsed töövahendid logide transpordiks
Logstashi tuleks seadistada vastuvõtuvõimalus
input { tcp { port => 19532 type => journald } }
Saatmise testimiseks võib anda käsu
/usr/lib/systemd/systemd-journal-upload -u http://127.0.2.1 &
Systemd unit mis automaatselt logimise käivitab systemd-journal-upload.service
[Unit] Description=Send journald entries to a remote logstash instance After=journald.service Requires=journald.service Documentation=man:systemd-journal-upload(8) [Service] Restart=always RestartSec=0 ExecStart=/usr/lib/systemd/systemd-journal-upload -u http://127.0.2.1
Kibana
Kibana veebiliides töötab pordil 5601
Lingid
https://secure.trifork.com/dl/goto-berlin-2014/GOTO_Night/logstash-kibana-intro.pdf
https://www.digitalocean.com/community/tutorials/how-to-use-kibana-dashboards-and-visualizations
https://home.regit.org/2014/02/02/
https://gist.github.com/brianredbeard/d5b02a1e998c63827b03 logstash ja systemd