Coder Social home page Coder Social logo

appfabs / appfabs.samples.elk.logaggregation Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 3.0 359 KB

Centralized Log Aggregation & Visualization using ELK Stack for Micro service Architecture

Java 100.00%
micro-service-architecture centralized-log-aggregation spring-cloud logstash kibana microservice spring-application log-aggregation elasticsearch spring-cloudconfig

appfabs.samples.elk.logaggregation's Introduction

This repository is for the source code part of the article https://appfabs.com/blog/2017/10/22/elk-log-aggregation.html. A miniature version of the article is explained here. Please visit the article and put your comments there.

Centralized Log Aggregation & Visualization using ELK Stack for Micro service Architecture

alt text

Source code part

About source

This repository is holding sample source code for centralized configuration for micro service architecture using spring cloud and two micro services for retrieving those configurations. The config client applications (customer-service and supplier-service) using net.logstash.logback.appender.LogstashTcpSocketAppender for sending all the logs to a remote machine where logstash is running. The logstash redirect all logs to elastic search.

Spring Cloud Config Sample Repository

https://github.com/appfabs/appfabs.sample.springcloud-config-repo.git

This is a sample repository for storing centralized configuration and access those configurations using spring cloud config server. Those configuration will be available in a spring application as spring properties.

Project Details

  • spring-cloudconfig : This is spring cloud config server application which stores all the configurations required for its clients. For getting configurations, all services needs to connect to this service.
  • spring-customer-service : This is a sample spring boot application which retrieves configurations from spring cloud config server. Also by using LogstashTcpSocketAppender, this service sends logs to a remote machine for storing.
  • spring-supplier-service : This is also a sample spring boot application which retrieves configurations from spring cloud config server. Also by using LogstashTcpSocketAppender, this service sends logs to a remote machine for storing.

Running Project

  • This is a maven project
  • Use maven install for generating packages
  • The packages will be generated in root folder under directory packages
  • run spring cloud config server first using java -jar spring-cloudconfig-0.1.jar. It will connect to git repository https://github.com/appfabs/appfabs.sample.springcloud-config-repo.git and fetch configurations.
  • spring-customer-service-0.1.jar and spring-supplier-service-0.1.jar can also be run using java -jar <jar_file.jar> options

Now you can see that logs will be generating in three ways

  • Console Output
  • To log file. Refer /var/log/spring-customer-service.log and /var/log/spring-supplier-service.log
  • Sending to logstash via Socket

Refer the logback-spring.xml file available in customer-service and supplier-service projects for the different configuration options.

ELK Configurations

Here giving Ubuntu 16.04 as our reference operating system to explain installation steps

Install Elastic Search

Goto https://www.elastic.co/downloads/elasticsearch and download the required package for your operating system.

For ubuntu, download the latest debian package. Then install the package using

$ sudo dpkg –i elasticsearch-5.6.3.deb

The default installation directory of elastic search is /usr/share/elasticsearch. Elasticsearch configuration file can be located at /etc/elasticsearch/elasticsearch.yml. You need to modify http.port and network.host properties to a valid IP address and port number for accessing from outside network.

Example :

network.host : 192.168.0.104

http.port : 9200

Starting the elastic search service using

$ sudo service elasticsearch start

The elastic search can be accessed using http://192.168.0.104:9200

Install Kibana

Download latest Kibana from https://www.elastic.co/downloads/kibana

Then install the package using

$ sudo dpkg –i kibana-5.6.3-amd64.deb

The default installation directory of kibana is /usr/share/kibana. Kibana configuration file can be located at /etc/kibana/kibana.yml. You need to modify server.port and server.host properties to a valid IP address and port number for accessing from outside network.

Example :

server.host : 192.168.0.104 server.port : 5601

Starting Kibana Service

$ sudo service kibana start

Now pointed to your web-browser and type the address http://192.168.0.104:5601 will bring kibana web interface in front of you.

Install Log Stash

Download latest Logstash from https://www.elastic.co/downloads/logstash

Then install the package using

$ sudo dpkg –i logstash-5.6.3.deb

Now the package is installed to /usr/share/logstash. Logstash configurations are available at /etc/logstash/. You can edit logstash.yml file and can enter a valid ip address in http.host property for remote access.

Example :

http.host : 192.168.0.104

Logstash Configuration

Create a configuration file named appfabs-log-configuration.conf at location /usr/share/Logstash/ with the below entries.

input {
    tcp {
        port => 5043
        codec => json_lines
    }
}
filter {
}
output {
  stdout {
      codec => rubydebug
  }
  elasticsearch {
      hosts=>"192.168.0.104:9200"
      index=>"appfabs-logback"
  }
}

Running configuraion

In the terminal, goto /usr/share/Logstash. Enter the below command.

$ bin/logstash –f appshield-log-configuration.conf

Final Steps

If all the ELK services are running correctly and the microservices running with sending logs, then the logstash terminal will be listed with json strings as shown below

{
      "logfiledirectory" => "/var/log",
                 "level" => "WARN",
               "logfile" => "spring-customer-service.log",
            "maxHistory" => "60",
          "logstashhost" => "192.168.0.104:5043",
           "maxFileSize" => "100MB",
               "message" => "warn message slf4j",
        "maxArchiveSize" => "10GB",
            "@timestamp" => 2017-10-16T17:17:14.102Z,
                  "port" => 15646,
           "thread_name" => "main",
           "level_value" => 30000,
    "productionLogLevel" => "INFO",
              "@version" => 1,
                  "host" => "192.168.0.101",
       "stagingLogLevel" => "INFO",
           "logger_name" => "org.appfabs.sample.logaggregation.customer.service.CustomerService",
           "devLogLevel" => "DEBUG"
}

Now goto kibana and create index pattern using appfabs-logback*. All the logs will be available in this index pattern and you can start analyze your logs.

appfabs.samples.elk.logaggregation's People

Contributors

prathapvpc avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.