All Projects → LeeKyoungIl → Illuminati

LeeKyoungIl / Illuminati

Licence: apache-2.0
This is a Platform that collects all the data accuring in your Application and shows the data in real time by using Kibana or other tools.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Illuminati

Sematext Agent Docker
Sematext Docker Agent - host + container metrics, logs & event collector
Stars: ✭ 194 (+83.02%)
Mutual labels:  logging, log, agent
Kkbinlog
支持mysql、MongoDB数据变更订阅分发
Stars: ✭ 112 (+5.66%)
Mutual labels:  kafka, spring, rabbitmq
Superman
Superman是什么:构建Java 高级开发技术的知识体系,从基础不断打怪升级成为超人之路(更新中.......)
Stars: ✭ 106 (+0%)
Mutual labels:  kafka, spring, rabbitmq
Qmq
QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。
Stars: ✭ 2,420 (+2183.02%)
Mutual labels:  event, kafka, rabbitmq
Myth
Reliable messages resolve distributed transactions
Stars: ✭ 1,470 (+1286.79%)
Mutual labels:  kafka, spring, rabbitmq
Gollum
An n:m message multiplexer written in Go
Stars: ✭ 883 (+733.02%)
Mutual labels:  stream, logging, log
Yii2 Psr Log Target
Yii 2.0 log target that is able to write messages to PSR-3 compatible logger
Stars: ✭ 58 (-45.28%)
Mutual labels:  logging, log
Ksql Fork With Deep Learning Function
Deep Learning UDF for KSQL, the Streaming SQL Engine for Apache Kafka with Elasticsearch Sink Example
Stars: ✭ 64 (-39.62%)
Mutual labels:  stream, kafka
Android Filelogger
A general-purpose logging library with built-in support to save logs to file efficiently.
Stars: ✭ 70 (-33.96%)
Mutual labels:  logging, log
Loguru
Python logging made (stupidly) simple
Stars: ✭ 10,510 (+9815.09%)
Mutual labels:  logging, log
Serverless Es Logs
A Serverless plugin to transport logs to ElasticSearch
Stars: ✭ 51 (-51.89%)
Mutual labels:  logging, log
Drain3
Drain log template miner in Python3
Stars: ✭ 71 (-33.02%)
Mutual labels:  kafka, log
Laravel Log To Db
Custom Laravel and Lumen 5.6+ Log channel handler that can store log events to SQL or MongoDB databases. Uses Laravel/Monolog native logging functionality.
Stars: ✭ 76 (-28.3%)
Mutual labels:  logging, log
Spring Cloud Stream Demo
Simple Event Driven Microservices with Spring Cloud Stream
Stars: ✭ 58 (-45.28%)
Mutual labels:  kafka, rabbitmq
Commonx
基础框架
Stars: ✭ 57 (-46.23%)
Mutual labels:  kafka, rabbitmq
Spring Higher Order Components
⚡️ Preconfigured components to speedup Spring Boot development
Stars: ✭ 65 (-38.68%)
Mutual labels:  spring, logging
Plog
Portable, simple and extensible C++ logging library
Stars: ✭ 1,061 (+900.94%)
Mutual labels:  logging, log
Bekit
bekit框架致力于解决在应用开发中的公共性痛点,已有“事件总线”、“流程引擎”、“服务引擎”。其中“流程引擎”可作为分布式事务解决方案saga模式的一种实现,并且它很轻量不需要服务端、不需要配置,就可直接使用。
Stars: ✭ 71 (-33.02%)
Mutual labels:  event, spring
Supermarket
设计精良的网上商城系统,包括前端、后端、数据库、负载均衡、数据库缓存、分库分表、读写分离、全文检索、消息队列等,使用SpringCloud框架,基于Java开发。该项目可部署到服务器上,不断完善中……
Stars: ✭ 1,278 (+1105.66%)
Mutual labels:  spring, rabbitmq
Bigpipe
以Kafka为存储介质,提供异步Http RPC的中间件
Stars: ✭ 84 (-20.75%)
Mutual labels:  kafka, agent

Project illuminati

image

This is a Platform that collects all the data accruing in your Application and shows the data in real time by using Kibana or other tools.

illuminati's intention to develop

There is no garbage data in your Application. It is necessary to identify what data is the most important among the collecting data from your Applications. Also collect and analysis must be performed in different processes. The illuminati is designed to make collect all data easily, and it can be possible scalability working by separated analysis process.

required

  • Java8 or higher.
  • Java Application that can use AspectJ
  • Simple Mode is No infrastructure required

optional

  • Message queue (RabbitMQ or Kafka)
  • H2 Database (for backup)

recommendations

  • ElasticSearch (5.x or higher)
  • Hadoop (3.x or higher)
  • Kibana
  • Spring Cloud Stream - used to create a consumer application

struct of illuminati Project

data to collect of illuminati.

  1. Applied server information(IP, HOST_NAME...ETC), status of JVM MEMORY.
  2. All of client request information.
    • All of Header and Cookie
    • OS, BROWSER, DEVICE information
    • Global Transaction ID generation enables application parent method call order and content traceability.
    • Execution methods and parameters on the application.
    • Method execution time in Application.
    • Value of Method request parameter. (GET, POST)
    • Result value of the method request on the application.
  3. Collect User Event data from Browser by User action. (Key board press or mouse click)
  4. It can collect Event data from Browser to Server to Response by One Transaction Id.

illuminati is easy to use

  1. Do not need to create a data type. (No DTO required)
  2. Agent installation is not required.
  3. Annotation type is easy to apply.
  4. Internal method request like the private method can't collect data. For example, if you call the a2 method of class A from the a1 method of class A, you cannot collect data.

illuminati operator method

  1. Add dependency of MAVEN or Gradle (illuminati)
  2. Add configuration in illuminati-{phase}.yml, properties (address of queue... etc)
  3. When execute application with add -Dspring.profiles.active={phase}
  4. Add "@Illuminati" Annotation to where you want to collect
  5. Add to Html in <script></script> in illuminatiJsAgent.min.js script file.

illuminati does not affect the origin application logic

  1. It was developed to have no influence on this logic by using a separate thread and Buffer.
  2. Drop in performance can occur, but there is no big difference in physical server. (It can happen a little more on virtual machines.)
  3. Even if an exception occurs in the original application logic, illuminati can also collect the corresponding exception information.
  4. When the Illuminati collect the Data. If a problems aries. Save that data to separate storage. and If the problem is fixed. data will automatically restore. (Backup function)
  5. Grace Shutdown mode is supported. (When Backup function is activated.)

struct of illuminati

Basic state

image

Backup function when there is a problem with the broker

image

Simple Mode (No infrastructure required. Can be used with Java Console log solutions.)

image

add to Maven Dependency

* Maven
<dependencies>
   <dependency>
      <groupId>me.phoboslabs.illuminati</groupId>
      <artifactId>illuminati-annotation</artifactId>
      <version>1.2.4</version>
   </dependency>

   <dependency>
      <groupId>me.phoboslabs.illuminati</groupId>
      <artifactId>illuminati-processor</artifactId>
      <version>0.9.9.39</version>
   </dependency>
   
   <!-- This is an option. If you add the module, you can turn it on and off without deploying it. -->
   <dependency>
       <groupId>me.phoboslabs.illuminati</groupId>
       <artifactId>illuminati-switch</artifactId>
       <version>1.0.18</version>
   </dependency>

   <!-- This is an option. If you add the module, you can collect Event data from Browser to server to response by one transaction id. -->
   <dependency>
      <groupId>me.phoboslabs.illuminati</groupId>
      <artifactId>illuminati-jscollector</artifactId>
      <version>0.5.19</version>
   </dependency>
</dependencies>

add to Gradle Dependency

* Gradle
repositories {
    jcenter()
}

compile 'me.phoboslabs.illuminati:illuminati-annotation:1.2.4'
compile 'me.phoboslabs.illuminati:illuminati-processor:0.9.9.39'
// This is an option. If you add the module, you can turn it on and off without deploying it.
compile 'me.phoboslabs.illuminati:illuminati-switch:1.0.18'
<!-- This is an option. If you add the module, you can collect Event data from Browser to server to response by one transaction id. -->
compile 'me.phoboslabs.illuminati:illuminati-jscollector:0.5.19'

add @Illuminati to Class

* apply to all sub methods
@Illuminati
@RestController
@RequestMapping(value = "/api/v1/", produces = MediaType.APPLICATION_JSON_VALUE)
public class ApiSampleController {

    @RequestMapping(value = "test1")
    public String test1 (String a, Integer b) throws Exception {
        String testJson = "{\"test\" : 1}";
        return testJson;
    }
    
    @RequestMapping(value = "test2")
        public String test2 (String a, Integer b) throws Exception {
            String testJson = "{\"test\" : 2}";
            return testJson;
        }
}

add @Illuminati to Method

* apply to all target method
@RestController
@RequestMapping(value = "/api/v1/", produces = MediaType.APPLICATION_JSON_VALUE)
public class ApiSampleController {

    @RequestMapping(value = "test1")
    public String test1 (String a, Integer b) throws Exception {
        String testJson = "{\"test\" : 1}";
        return testJson;
    }
    
    @Illuminati
    @RequestMapping(value = "test2")
        public String test2 (String a, Integer b) throws Exception {
            String testJson = "{\"test\" : 2}";
            return testJson;
        }
}

(Optional) add to Javascript in HTML & initialization

* javascript
<script src="/js/illuminatiJsAgent.js"></script>
<script type="text/javascript">
    illuminatiJsAgent.init();
</script>   

add illuminati consumer

  1. Easily add Consumer using Spring Cloud Stream
  2. Consumer can transfer data. (ElasticSearch, MongoDB, MySQL, Hadoop, etc.)
    • Multiple consumers can receive the same Event data.
    • It is easy to increase throughput by dividing data from many consumers.

Illuminati data can be used in Kibana

  • Sample of Commerce Data.

image

License

Project illuminati is licensed under the Apache License, Version 2.0. See LICENSE for full license text.

Copyright 2017 Phoboslabs.me.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].