🖍️
Developer Note
  • Welcome
  • Git
    • Eslint & Prettier & Stylelint & Husky
  • Programming Language
    • JavaScript
      • Script Async vs Defer
      • Module
      • Const VS Let VS Var
      • Promise
      • Event Loop
      • Execution Context
      • Hoisting
      • Closure
      • Event Buddling and Capturing
      • Garbage Collection
      • This
      • Routing
      • Debounce and Throttle
      • Web Component
      • Iterator
      • Syntax
      • String
      • Array
      • Object
      • Proxy & Reflect
      • ProtoType
      • Class
      • Immutability
      • Typeof & Instanceof
      • Npm (Node package manager)
    • TypeScript
      • Utility Type
      • Type vs Interface
      • Any vs Unknown vs Never
      • Void and undefined
      • Strict Mode
      • Namespace
      • Enum
      • Module
      • Generic
    • Python
      • Local Development
      • Uv
      • Asyncio & Event loop
      • Context Manager
      • Iterator & Generator
      • Fast API
      • Pydantic & Data Class
    • Java
      • Compilation and Execution
      • Data Type
      • Enumeration
      • Data Structure
      • Try Catch
      • InputStream and OutputStream
      • Concurrent
      • Unicode Block
      • Build Tools
      • Servlet
      • Java 8
  • Coding Pattern
    • MVC vs MVVM
    • OOP vs Functional
    • Error Handling
    • MVC vs Flux
    • Imperative vs Declarative
    • Design Pattern
  • Web Communication
    • REST API
      • Web Hook
      • CORS issue
    • HTTPS
    • GraphQL
      • REST API vs GraphQL
      • Implementation (NodeJS + React)
    • Server-Sent Event
    • Web Socket
    • IP
    • Domain Name System (DNS)
  • Frontend
    • Progressive Web App (PWA)
    • Single Page & Multiple Page Application
    • Search Engine Optimiaztion (SEO)
    • Web bundling & Micro-frontend
      • Webpack
        • Using Webpack to build React Application
        • Using Webpack to build react library
      • Vite
      • Using rollup to build react library
      • Implementing micro frontend
    • Web Security
      • CSRF & Nonce
      • XSS
      • Click hijacking
    • Cypress
    • CSS
      • Core
        • Box Model
        • Inline vs Block
        • Flexbox & Grid
        • Pseudo Class
        • Position
      • Tailwind CSS
        • Shadcn
      • CSS In JS
        • Material UI
    • React
      • Core
        • Component Pattern
        • React Lazy & Suspense
        • React Portal
        • Error Boundary
        • Rendering Methods
        • Environment Variable
        • Conditional CSS
        • Memo
        • Forward Reference
        • High Order Component (HOC) & Custom Hook
        • TypeScript
      • State Management
        • Redux
        • Recoil
        • Zustand
      • Routing
        • React Router Dom
      • Data Fetching
        • Axios & Hook
        • React Query
        • Orval
      • Table
        • React Table
      • Form & Validation
        • React Hook Form
        • Zod
      • NextJS
        • Page Router
        • App Router
      • React Native
    • Angular
    • Svelte
      • Svelte Kit
  • Backend
    • Cache
      • Browser Cache
      • Web Browser Storage
      • Proxy
      • Redis
    • Rate limit
    • Monitoring
      • Logging
      • Distributed Tracing
    • Load Test
    • Encryption
    • Authentication
      • Password Protection
      • Cookie & Session
      • JSON Web Token
      • SSO
        • OAuth 2.0
        • OpenID Connect (OIDC)
        • SAML
    • Payment
      • Pre-built
      • Custom
    • File Handling
      • Upload & Download (Front-end)
      • Stream & Buffer
    • Microservice
      • API Gateway
      • Service Discovery
      • Load Balancer
      • Circuit Breaker
      • Message Broker
      • BulkHead & Zipkin
    • Elastic Search
    • Database
      • SQL
        • Group By vs Distinct
        • Index
        • N + 1 problem
        • Normalization
        • Foreign Key
        • Relationship
        • Union & Join
        • User Defined Type
      • NOSQL (MongoDB)
      • Transaction
      • Sharding
      • Lock (Concurrency Control)
    • NodeJS
      • NodeJS vs Java Spring
      • ExpressJS
      • NestJS
        • Swagger
        • Class Validator & Validation Pipe
        • Passport (Authentication)
      • Path Module
      • Database Connection
        • Integrating with MYSQL
        • Sequalize
        • Integrating with MongoDB
        • Prisma
        • MikroORM
        • Mongoose
      • Streaming
      • Worker Thread
      • Passport JS
      • JSON Web Token
      • Socket IO
      • Bull MQ
      • Pino (Logging)
      • Yeoman
    • Spring
      • Spring MVC
      • Spring REST
      • Spring Actuator
      • Aspect Oriented Programming (AOP)
      • Controller Advice
      • Filter
      • Interceptor
      • Concurrent
      • Spring Security
      • Spring Boot
      • Spring Cloud
        • Resilience 4j
      • Quartz vs Spring Batch
      • JPA and Hibernate
      • HATEOS
      • Swagger
      • Unit Test (Java Spring)
      • Unit Test (Spring boot)
  • DevOp
    • Docker
    • Kubernetes
      • Helm
    • Nginx
    • File System
    • Cloud
      • AWS
        • EC2 (Virtual Machine)
        • Network
        • IAM
          • Role-Service Binding
        • Database
        • Route 53
        • S3
        • Message Queue
        • Application Service
        • Serverless Framework
        • Data Analysis
        • Machine Learning
        • Monitoring
        • Security
      • Azure
        • Identity
        • Compute Resource
        • Networking
        • Storage
        • Monitoring
      • Google Cloud
        • IAM
          • Workload Identity Federation
        • Compute Engine
        • VPC Network
        • Storage
        • Kubernetes Engine
        • App Engine
        • Cloud function
        • Cloud Run
        • Infra as Code
        • Pub/Sub
    • Deployment Strategy
    • Jenkins
    • Examples
      • Deploy NextJS on GCP
      • Deploy Spring on Azure
      • Deploy React on Azure
  • Domain Knowledge
    • Web 3
      • Blockchain
      • Cryptocurrency
    • AI
      • Prompt
      • Chain & Agent
      • LangChain
      • Chunking
      • Search
      • Side Products
Powered by GitBook
On this page
  • Level
  • System Design
  • Log accumulator
  • Log aggregator
  • Log Visualizer
  • Stack
  • PLG
  • ELK
  • References

Was this helpful?

  1. Backend
  2. Monitoring

Logging

Level

  • Using log levels, a security analyst can decide the priority and the characteristic of log easily

  • Minimum number of priority can be set to filter out some of less important log

  • Here is the common logging level and its priority number

const logger = require('./logger');

logger.fatal('fatal');
logger.error('error');
logger.warn('warn');
logger.info('info');
logger.debug('debug');
logger.trace('trace');

// output:
// {"level":60,"time":1643664517737,"pid":20047,"hostname":"fedora","msg":"fatal"}
// {"level":50,"time":1643664517738,"pid":20047,"hostname":"fedora","msg":"error"}
// {"level":40,"time":1643664517738,"pid":20047,"hostname":"fedora","msg":"warn"}
// {"level":30,"time":1643664517738,"pid":20047,"hostname":"fedora","msg":"info"}
// {"level":20,"time":1643664517738,"pid":20047,"hostname":"fedora","msg":"debug"}
// {"level":10,"time":1643664517738,"pid":20047,"hostname":"fedora","msg":"trace"}

System Design

  • The logging system can be mainly divided into several components

Log accumulator

  • It can be placed on se­rvers or devices. The­ agents collect logs on the de­vices themselve­s. They then send the­ collected logs to a central logging syste­m

Log aggregator

  • To stream processing huge log datas from different sources

  • To consolidates logs from different sources into a centralized location. This centralization simplifies log management and ensures that all logs are stored in a unified manner, making it easier to search and analyze them.

  • To label the log and store the logs into storage

  • To integrate with analysis tool and handle the query from frontend and fetch the result from storage or cache

  • To support the creation of custom monitoring and alerting rules to detect anomalies, threshold breaches, or specific patterns in log data, triggering notifications or automated actions when predefined conditions are met.

Log Visualizer

  • Act as a frontend for user to output a log

  • Allow user to enter query, setting up the rules and alert based on the data source

Stack

  • There are common stacks/ practices for implementing the design - PLG / ELK

PLG

Promtail (P)

  • Act as a log accumulator, can be installed as a daemon set on different machines

  • To collect the log from different applications and then send to loki

Loki (L)

  • Distributors use consistent hashing in conjunction with a configurable replication factor to determine which instances of the ingester service should receive a given stream.

  • The ingester service is responsible for writing log data to long-term storage backends (DynamoDB, S3, Cassandra, etc.) on the write path and returning log data for in-memory queries on the read path.

Grafana (G)

  • Act as a log visualizer

ELK

Logstash (L)

  • Act as a log accumulator or data pipeline. It collects logs from various sources, stream processing the data and finally sends it to Elastic search or other destinations

Elastic Search (E)

  • Act as a log aggregator

  • Unlike loki , it focus on storing the log data

  • To index the data it receives, enabling fast and efficient search capabilities. It uses inverted index structures to build indexes on the data, allowing for quick retrieval of relevant information based on search queries.

Kibana (K)

  • Act as frontend for viewing log

References

PreviousMonitoringNextDistributed Tracing

Last updated 1 year ago

Was this helpful?

The distributor service is responsible for handling incoming streams by clients. It’s the first stop in the write path for log data. Once the distributor receives a set of streams, each stream is validated for correctness and to ensure that it is within the configured tenant (or global) limits. Valid chunks are then split into batches and sent to multiple in parallel.

The querier service handles queries using the query language, fetching logs both from the ingesters and from long-term storage.

ingesters
LogQL
LogoCentralized Logging Systems | System Design - GeeksforGeeksGeeksforGeeks
LogoELK Stack Tutorial: What is Kibana, Logstash & Elasticsearch?Guru99
LogoLoki components | Grafana Loki documentationGrafana Labs
Logo[DevOps]Grafana + Loki + Promtail Logging system 小試牛刀Medium