Erinevus lehekülje "ELK Stack põhine logiserver" redaktsioonide vahel

Allikas: Kuutõrvaja
(Systemd journal)
(Systemd journal)
173. rida: 173. rida:
 
* /etc/systemd/journal-upload.conf
 
* /etc/systemd/journal-upload.conf
  
Viimast saab sodida ja esimese enableda, siis pole vaja ise unitit kirjutada.
+
Viimast saab sodida ja esimese enableda, siis pole vaja ise unitit kirjutada. Näiteks
 +
 
 +
[Upload]
 +
URL= http://127.0.2.1
  
 
= Kibana =
 
= Kibana =

Redaktsioon: 14. jaanuar 2016, kell 12:12

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

  1. Logstash: mis kuulab 5000 pordil ja võtab logid serveritest vastu
  2. Elasticsearch: tegeleb logi salvestamise ja indekseerimisega
  3. 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 pakiga kaasas on upload service ja tema konff

  • /usr/lib/systemd/system/systemd-journal-upload.service
  • /etc/systemd/journal-upload.conf

Viimast saab sodida ja esimese enableda, siis pole vaja ise unitit kirjutada. Näiteks

[Upload]
URL= http://127.0.2.1

Kibana

Kibana veebiliides töötab pordil 5601

Discover-unfiltered.png

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://hibern8.wordpress.com/2014/02/26/logstash-redis-elasticsearch-and-kibana-real-time-data-analysis-on-debian-wheezy/

https://home.regit.org/2014/02/02/

https://deviantony.wordpress.com/2014/05/19/centralized-logging-with-an-elk-stack-elasticsearch-logback-kibana/

https://www.digitalocean.com/community/tutorials/how-to-use-logstash-and-kibana-to-centralize-and-visualize-logs-on-ubuntu-14-04

https://gist.github.com/brianredbeard/d5b02a1e998c63827b03 logstash ja systemd