<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.frotmail.nl/index.php?action=history&amp;feed=atom&amp;title=Kibana</id>
	<title>Kibana - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.frotmail.nl/index.php?action=history&amp;feed=atom&amp;title=Kibana"/>
	<link rel="alternate" type="text/html" href="https://wiki.frotmail.nl/index.php?title=Kibana&amp;action=history"/>
	<updated>2026-08-06T02:55:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.frotmail.nl/index.php?title=Kibana&amp;diff=87&amp;oldid=prev</id>
		<title>Eric: Created page with &quot;=Docker= ==Apt-get==  apt-get install docker-compose docker adjust   sudo joe /etc/sysctl.conf   vm.max_map_count=262144   apt-get remove apparmor  ==Docker-compose==  version: &#039;2&#039;   services:    kibana:        image: kibana:6.7.0      container_name: kibana      links:        - &#039;elastic:elasticsearch&#039;      ports:        - &#039;5601:5601&#039;    logstash:        image: logstash:6.7.0      container_name: logstash      volumes:        - /root/docker/logstash/config/:/usr/share/lo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.frotmail.nl/index.php?title=Kibana&amp;diff=87&amp;oldid=prev"/>
		<updated>2022-04-05T09:32:42Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Docker= ==Apt-get==  apt-get install docker-compose docker adjust   sudo joe /etc/sysctl.conf   vm.max_map_count=262144   apt-get remove apparmor  ==Docker-compose==  version: &amp;#039;2&amp;#039;   services:    kibana:        image: kibana:6.7.0      container_name: kibana      links:        - &amp;#039;elastic:elasticsearch&amp;#039;      ports:        - &amp;#039;5601:5601&amp;#039;    logstash:        image: logstash:6.7.0      container_name: logstash      volumes:        - /root/docker/logstash/config/:/usr/share/lo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Docker=&lt;br /&gt;
==Apt-get==&lt;br /&gt;
 apt-get install docker-compose docker&lt;br /&gt;
adjust &lt;br /&gt;
 sudo joe /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
 vm.max_map_count=262144&lt;br /&gt;
&lt;br /&gt;
 apt-get remove apparmor&lt;br /&gt;
&lt;br /&gt;
==Docker-compose==&lt;br /&gt;
 version: &amp;#039;2&amp;#039;&lt;br /&gt;
  services:&lt;br /&gt;
   kibana:  &lt;br /&gt;
     image: kibana:6.7.0&lt;br /&gt;
     container_name: kibana&lt;br /&gt;
     links:&lt;br /&gt;
       - &amp;#039;elastic:elasticsearch&amp;#039;&lt;br /&gt;
     ports:&lt;br /&gt;
       - &amp;#039;5601:5601&amp;#039;&lt;br /&gt;
   logstash:  &lt;br /&gt;
     image: logstash:6.7.0&lt;br /&gt;
     container_name: logstash&lt;br /&gt;
     volumes:&lt;br /&gt;
       - /root/docker/logstash/config/:/usr/share/logstash/config/&lt;br /&gt;
       - /root/docker/logstash/patterns/:/usr/share/logstash/patterns/&lt;br /&gt;
     ports:&lt;br /&gt;
       - &amp;#039;5000:5000/udp&amp;#039;&lt;br /&gt;
     command: &amp;#039;logstash -f /usr/share/logstash/config/&amp;#039;&lt;br /&gt;
     links:&lt;br /&gt;
       - elastic&lt;br /&gt;
   elastic:  &lt;br /&gt;
     image: elasticsearch:6.7.0&lt;br /&gt;
     container_name: elastic&lt;br /&gt;
==Logstash==&lt;br /&gt;
 touch /root/docker/logstash/config/logstash.yml&lt;br /&gt;
&lt;br /&gt;
/root/docker/logstash/config/syslog.conf&lt;br /&gt;
 input {&lt;br /&gt;
     syslog {&lt;br /&gt;
         port =&amp;gt; 5000&lt;br /&gt;
         type =&amp;gt; &amp;quot;rsyslog&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     udp {&lt;br /&gt;
         host =&amp;gt; &amp;quot;0.0.0.0&amp;quot;&lt;br /&gt;
         port =&amp;gt; &amp;quot;2055&amp;quot;&lt;br /&gt;
         codec =&amp;gt; netflow {&lt;br /&gt;
             versions =&amp;gt; [5, 9]&lt;br /&gt;
         }&lt;br /&gt;
         type =&amp;gt; &amp;quot;netflow&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 filter {&lt;br /&gt;
     if [type] == &amp;quot;rsyslog&amp;quot; {&lt;br /&gt;
         grok {&lt;br /&gt;
             patterns_dir =&amp;gt; [&amp;quot;/usr/share/logstash/patterns/&amp;quot;]&lt;br /&gt;
             match =&amp;gt; { &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;%{MIKROTIK}&amp;quot; }&lt;br /&gt;
             match =&amp;gt; { &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;%{GREEDYDATA:message}&amp;quot; }&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 output {&lt;br /&gt;
     elasticsearch {&lt;br /&gt;
       hosts =&amp;gt; [ &amp;quot;elastic:9200&amp;quot; ]&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
/root/docker/logstash/patterns/&lt;br /&gt;
 MIKROTIK_CAPS1 (?&amp;lt;mac_address&amp;gt;\S+)@(?&amp;lt;device&amp;gt;\S+) (?&amp;lt;action&amp;gt;connected|disconnected), %{GREEDYDATA:reason}&lt;br /&gt;
 MIKROTIK_CAPS2 (?&amp;lt;mac_address&amp;gt;\S+)@(?&amp;lt;device&amp;gt;\S+) (?&amp;lt;action&amp;gt;connected|disconnected)&lt;br /&gt;
 &lt;br /&gt;
 # Firewall Log (No NAT):&lt;br /&gt;
 MIKROTIKFIREWALLNONAT %{DATA:LogChain}: in:%{DATA:src_zone} out:%{DATA:dst_zone}, src-mac %{MAC}, proto %{DATA:proto}, %{IP:src_ip}:%{INT:src_port}-&amp;gt;%{IP:dst_ip}:%{INT:dst_port}, len %{INT:length}&lt;br /&gt;
 ## firewall,info TODO forward: in:vlan100-dmz out:vlan10-prod, src-mac 52:54:00:d4:f5:21, proto TCP (RST), 192.168.99.16:443-&amp;gt;192.168.38.88:46494, len 40&lt;br /&gt;
 MIKROTIKFIREWALL (?:%{MIKROTIKFIREWALLNONAT})&lt;br /&gt;
 &lt;br /&gt;
 #DHCP&lt;br /&gt;
 MIKROTIKDHCP %{DATA:DHCP_zone} %{WORD:DHCP_state} %{IP:src_ip} (?:from|to) %{MAC:src_mac}&lt;br /&gt;
 &lt;br /&gt;
 # System Login&lt;br /&gt;
 &lt;br /&gt;
 MIKROTIKLOGINOUT %{SYSLOGTIMESTAMP:date} MikroTik user %{WORD:user} logged (?:out|in) from %{IP:src_ip} via %{WORD:src_type}&lt;br /&gt;
 MIKROTIKLOGINFAIL %{SYSLOGTIMESTAMP:date} MikroTik login failure for user %{WORD:user} from %{IP:src_ip} via %{WORD:src_type}&lt;br /&gt;
 &lt;br /&gt;
 MIKROTIKLOGIN (?:%{MIKROTIKLOGINOUT}|%{MIKROTIKLOGINFAIL})&lt;br /&gt;
 &lt;br /&gt;
 # Add all the above&lt;br /&gt;
 MIKROTIK (?:%{MIKROTIKFIREWALL}|%{MIKROTIKDHCP}|%{MIKROTIKLOGIN}|%{MIKROTIK_CAPS1}|%{MIKROTIK_CAPS2})&lt;br /&gt;
=Native (oud)=&lt;br /&gt;
==Install ELK==&lt;br /&gt;
This guide is based on Ubuntu Server 16.04&lt;br /&gt;
&lt;br /&gt;
===APT sources===&lt;br /&gt;
 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -&lt;br /&gt;
 echo &amp;quot;deb https://artifacts.elastic.co/packages/5.x/apt stable main&amp;quot; &amp;gt; /etc/apt/sources.list.d/elastic-5.x.list&lt;br /&gt;
&lt;br /&gt;
===Install packages===&lt;br /&gt;
 apt update&lt;br /&gt;
 apt install openjdk-8-jre kibana elasticsearch rsyslog&lt;br /&gt;
 apt install logstash&lt;br /&gt;
&lt;br /&gt;
==Config RSyslog==&lt;br /&gt;
/etc/rsyslog.d/49-remote.conf&lt;br /&gt;
 if $fromhost-ip startswith &amp;#039;192.168.38.254&amp;#039; then {&lt;br /&gt;
         action(type=&amp;quot;omfwd&amp;quot; template=&amp;quot;json-template&amp;quot; target=&amp;quot;localhost&amp;quot; port=&amp;quot;10514&amp;quot;)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 service rsyslog restart&lt;br /&gt;
&lt;br /&gt;
===LogStash===&lt;br /&gt;
Create folders for patterns&lt;br /&gt;
 mkdir -p /opt/logstash/patterns&lt;br /&gt;
 chown -R logstash:logstash /opt/logstash &lt;br /&gt;
&lt;br /&gt;
Patterns file&lt;br /&gt;
&lt;br /&gt;
/opt/logstash/patterns/mikrotik&lt;br /&gt;
 MIKROTIK_DHCP (?&amp;lt;action&amp;gt;assigned|deassigned) %{IP:ip} (?&amp;lt;verb&amp;gt;to|from) (?&amp;lt;mac_address&amp;gt;\S+)&lt;br /&gt;
 MIKROTIK_CAPS1 (?&amp;lt;mac_address&amp;gt;\S+)@(?&amp;lt;device&amp;gt;\S+) (?&amp;lt;action&amp;gt;connected|disconnected), %{GREEDYDATA:reason}&lt;br /&gt;
 MIKROTIK_CAPS2 (?&amp;lt;mac_address&amp;gt;\S+)@(?&amp;lt;device&amp;gt;\S+) (?&amp;lt;action&amp;gt;connected|disconnected)&lt;br /&gt;
&lt;br /&gt;
Config&lt;br /&gt;
&lt;br /&gt;
/etc/logstash/conf.d/logstash.conf&lt;br /&gt;
 input {&lt;br /&gt;
   udp {&lt;br /&gt;
     host =&amp;gt; &amp;quot;127.0.0.1&amp;quot;&lt;br /&gt;
     port =&amp;gt; 10514&lt;br /&gt;
     codec =&amp;gt; &amp;quot;json&amp;quot;&lt;br /&gt;
     type =&amp;gt; &amp;quot;rsyslog&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   udp {&lt;br /&gt;
     host =&amp;gt; &amp;quot;0.0.0.0&amp;quot;&lt;br /&gt;
     port =&amp;gt; &amp;quot;2055&amp;quot;&lt;br /&gt;
     codec =&amp;gt; netflow {&lt;br /&gt;
       versions =&amp;gt; [5, 9]&lt;br /&gt;
     }&lt;br /&gt;
     type =&amp;gt; &amp;quot;netflow&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # This is an empty filter block.  You can later add other filters here to further process&lt;br /&gt;
 # your log lines&lt;br /&gt;
 &lt;br /&gt;
 filter {&lt;br /&gt;
         if [type] == &amp;quot;rsyslog&amp;quot; {&lt;br /&gt;
         grok {&lt;br /&gt;
                 patterns_dir =&amp;gt; [&amp;quot;/opt/logstash/patterns/&amp;quot;]&lt;br /&gt;
                 match =&amp;gt; { &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;%{MIKROTIK_DHCP}&amp;quot; }&lt;br /&gt;
                 match =&amp;gt; { &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;%{MIKROTIK_CAPS1}&amp;quot; }&lt;br /&gt;
                 match =&amp;gt; { &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;%{MIKROTIK_CAPS2}&amp;quot; }&lt;br /&gt;
                 match =&amp;gt; { &amp;quot;message&amp;quot; =&amp;gt; &amp;quot;%{GREEDYDATA:message}&amp;quot; }&lt;br /&gt;
         }&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # This output block will send all events of type &amp;quot;rsyslog&amp;quot; to Elasticsearch at the configured&lt;br /&gt;
 # host and port into daily indices of the pattern, &amp;quot;rsyslog-YYYY.MM.DD&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 output {&lt;br /&gt;
   if [type] == &amp;quot;rsyslog&amp;quot; and &amp;quot;_grokparsefailure&amp;quot; in [tags] {&lt;br /&gt;
         file { path =&amp;gt; &amp;quot;/var/log/logstash/failed_%{+YYYY-MM-dd}&amp;quot; }&lt;br /&gt;
   }&lt;br /&gt;
   if [type] == &amp;quot;rsyslog&amp;quot; {&lt;br /&gt;
     elasticsearch {&lt;br /&gt;
       hosts =&amp;gt; [ &amp;quot;localhost:9200&amp;quot; ]&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   if [type] == &amp;quot;netflow&amp;quot; {&lt;br /&gt;
     elasticsearch {&lt;br /&gt;
       hosts =&amp;gt; [ &amp;quot;localhost:9200&amp;quot; ]&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==ElasticSearch==&lt;br /&gt;
 /etc/init.d/elasticsearch start&lt;br /&gt;
&lt;br /&gt;
==Kibana==&lt;br /&gt;
If not only access from localhost is required, edit /etc/kibana/kibana.yml:&lt;br /&gt;
 server.host: &amp;quot;::&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 service kibana start&lt;br /&gt;
&lt;br /&gt;
Now the kibana site should be available at http://[ip]:5601&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
* is the correct java version installed?&lt;br /&gt;
* Is kibana listening on loopback only? &lt;br /&gt;
** netstat -pant | grep 5601&lt;br /&gt;
* Is ElasticSearch running?&lt;/div&gt;</summary>
		<author><name>Eric</name></author>
	</entry>
</feed>