phoenix is a flexible and configurable open source system monitoring platform. It is mainly used to monitor applications, servers, databases, networks, TCP ports and http interfaces. It pushes alarm information in real time when abnormalities are found, and provides a visual system for configuration, management, Check.
1. Distributed;
2. Cross-platform;
3. Support docker deployment;
4. Real-time monitoring and alarming;
5. Data encryption transmission;
6. Flexible and configurable;
7. The user interface supports PC and mobile terminals.
app
Java applications are supported by default, and monitoring content includes: online status, JVM, and business focus. Other applications need to develop their own clients to call interfaces to communicate with the server or agent (heartbeat interface, server information interface, alarm interface);
JVM
Monitoring content includes: memory, threads, classes, GC, etc.;
server
Support mainstream servers, such as Linux, Windows, macOS, Unix, etc.;
Monitoring content includes: online status, operating system, CPU, average load, process, disk, memory, network card, battery, and sensors;
database
Support MySQL, Oracle, Redis, Mongo;
Monitor content
MySQL: session;
Oracle: session, table space;
Redis: Complete collection of Redis information;
Mongo: Complete collection of Mongo information;
Network: Support monitoring network status;
TCP: Support monitoring TCP service status;
HTTP: Support monitoring HTTP service status;
Warning: Email is supported by default.
Functional architecture
logical architecture
Maven3+
Jdk >=1.8, if you use Sigar to monitor the server, use Jdk 1.8 (1.8.0_131 to 1.8.0_241)
Lombok
Mysql5.7+
Core framework: SpringBoot
Security framework: SpringSecurity, SpringSession
Task scheduling: JUC, SpringTask, Quartz
Persistence layer framework: MyBatis, MyBatis-Plus
Database connection pool: Alibaba Druid
Log management: SLF4J, Logback
Front-end framework: Layui, ECharts
Monitoring framework: Sigar, oshi
The platform is developed using Java + Layui + ECharts, and the database uses MySQL.
phoenix (monitoring platform parent project) ├── phoenix-common (monitoring common module parent project) │ ├── phoenix-common-core (monitoring core common module) │ └── phoenix-common-web (monitoring WEB common module) ├── phoenix-client (monitoring client parent project) │ ├── phoenix-client-core (monitoring client) │ ├── phoenix-client-spring-boot-starter (monitoring client integrated with springboot starter) │ └── phoenix-client-spring-mvc-integrator (integrator that monitors the client and springmvc) ├── phoenix-agent (monitoring agent) ├── phoenix-server (monitoring server) ├── phoenix- ui (monitoring UI) └── doc (document)
phoenix: monitors the platform parent project, manages platform dependencies, builds, plug-ins, etc.;
phoenix-common: monitoring common module, providing all the public code of the platform, including a monitoring core public module (phoenix-common-core) and a monitoring WEB common module (phoenix-common-web);
phoenix-client: Monitoring client, used to integrate into Java applications to implement business tracking and Java application monitoring information collection, including a common module (phoenix-client-core) and a starter integrated with springboot (phoenix-client- spring-boot-starter) and the integrator integrated with springmvc (phoenix-client-spring-mvc-integrator) two expansion modules;
phoenix-agent: Monitoring agent, used to collect server information and aggregate and forward information from monitoring clients;
phoenix-server: Monitoring server is the core module of the monitoring platform. It is used to aggregate and analyze monitoring information, and push alarm information in real time when abnormalities are discovered;
phoenix-ui: Monitoring visualization system, used for platform configuration, user management, monitoring information viewing, chart display, etc.;
doc: Contains platform design documents, service startup and shutdown scripts, database scripts, etc.