Skip to content
YagelNasManit edited this page Sep 8, 2017 · 18 revisions

Environment Monitor overview

What is environment monitor?

Murphy's law: "Anything that can go wrong will go wrong."

Smith's Law: "Murphy was an optimist."

"In a distributed environment, inevitably some of the many service dependencies will fail." (c) Hystrix

In modern world where complexity of systems becomes higher and higher engineers often face situations when some environmental components for some reasons goes down. This reasons varies from situation to situation: unexpected thirdparty deployments, intermediate systems contract changes, human factor etc.

What if we could track environments over time, detect, and report such situations immediately?

Environment is an open source Java tool that provides such opportunity and isn`t limited with types or count of resources and environments that are tracked, and provides extensive configuration possibilities.

What does it do?

  1. Continuously track environments and resources.
  2. Persists environment availability data over time.
  3. Provides comprehensive responsive web UI to review environments availability details over time.
  4. Exposes REST API to extract availability data for further post processing.

How it is done?

Environment monitor uses externalised configuration that is passed in form of Jar file (it environment monitor terminology this jar is called status check extension). It enables doing checks of any kind of components, like web services, html pages, data bases, any kind of business logic actions, and any others. Basically any check that can be implemented with Java can be done.

Every environment configured in status check extension receives it`s own "checks thread" that performs components verifications with defined delay.

How the solution looks like?

On very basic level environment monitor consists of 3 main components:

Environment Monitor Server

Environment Monitor Server is the "heart" of environment monitor. It provides exposes most of environment monitor functionality:

  • Contiguous environment state tracking
  • Resource availability persistence and aggregation over time
  • Responsive WEB UI
  • RESTful WEB Services for representation and tracking of environment health over time.

Environment Monitor Server relies on Status Check Extension, where logic responsible for definition of resources & status checks should be defined.

Status Check Extension

Status check Extension can be considered as a "plugin" that each monitor consumer should implement in order to provide environment monitor with resources & logic for evaluation of their state. Status check plugin enables monitor to be customizable for any project needs including resource types, count, etc.

Database

Storage that Monitor WAR uses for persistence of resource checks results over time.

Where to proceed further?