• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

phoenix: “phoenix”是一个灵活可配置的开源监控平台,主要用于监控应用程序、服务器 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

phoenix

开源软件地址:

https://gitee.com/monitoring-platform/phoenix

开源软件介绍:

介绍

“phoenix” 是一个灵活可配置的开源监控平台,主要用于监控应用程序、服务器、数据库和网络,通过实时收集、汇聚和分析监控信息,实现在发现异常时立刻推送告警信息,并且提供了可视化系统进行配置、管理、查看。

  • 应用程序

    默认支持Java应用程序,监控内容包括:在线状态、JVM、业务埋点。其它应用程序需要自己开发客户端,来调用接口与服务端或者代理端通信(心跳接口、服务器信息接口、告警接口);

  • JVM

    监控内容包括:内存、线程、类、GC等;

  • 服务器

    支持主流服务器,如Linux、Windows、macOS、Unix等;
    监控内容包括:在线状态、操作系统、CPU、进程、磁盘、内存、网卡、电池、传感器;

  • 数据库

    支持MySQL、Oracle、Redis、Mongo;
    监控内容:
      MySQL:会话;
      Oracle:会话、表空间;
      Redis:Redis信息全集;
      Mongo:Mongo信息全集;

  • 网络:支持监控网络状态;

  • TCP:支持监控TCP服务状态;

  • 告警:默认支持电子邮件。

特点

  1. 分布式;
  2. 跨平台;
  3. 支持docker部署;
  4. 实时监测告警;
  5. 数据加密传输;
  6. 灵活可配置;
  7. 用户界面支持PC端、移动端。

设计

  • 功能架构

    功能导图

  • 逻辑架构

    逻辑架构图

  • 运行环境

    Maven3+
    Jdk1.8(1.8.0_131到1.8.0_241)
    Lombok
    Mysql5.7+

  • 技术选型

    核心框架:SpringBoot
    安全框架:SpringSecurity、SpringSession
    任务调度:JUC、SpringTask、Quartz
    持久层框架:MyBatis、 MyBatis-Plus
    数据库连接池:Alibaba Druid
    日志管理:SLF4J、Logback
    前端框架:Layui、ECharts
    监控框架:Sigar、oshi

  • 模块结构

    平台使用Java + Layui + ECharts开发,数据库采用MySQL。

    phoenix(监控平台父工程)
    ├── phoenix-common(监控公共模块父工程)
    │ ├── phoenix-common-core(监控核心公共模块)
    │ └── phoenix-common-web(监控WEB公共模块)
    ├── phoenix-client(监控客户端父工程)
    │ ├── phoenix-client-core(监控客户端)
    │ ├── phoenix-client-spring-boot-starter(监控客户端与springboot集成的starter)
    │ └── phoenix-client-spring-mvc-integrator(监控客户端与springmvc集成的integrator)
    ├── phoenix-agent(监控代理端)
    ├── phoenix-server(监控服务端)
    ├── phoenix-ui(监控UI端)
    └── doc(文档)

    phoenix:监控平台父工程,管理平台的依赖、构建、插件等;
    phoenix-common:监控公共模块,提供平台所有的公共代码,包含一个监控核心公共模块(phoenix-common-core)和一个监控WEB公共模块(phoenix-common-web);
    phoenix-client:监控客户端,用于集成到Java应用程序中实现业务埋点和Java应用程序监控信息收集,包含一个通用模块(phoenix-client-core)和与springboot集成的starter(phoenix-client-spring-boot-starter)、与springmvc集成的integrator(phoenix-client-spring-mvc-integrator)两个拓展模块;
    phoenix-agent:监控代理端,用于收集服务器信息和汇聚、转发来自监控客户端的信息;
    phoenix-server:监控服务端,是监控平台的核心模块,用于汇聚、分析监控信息,在发现异常时实时推送告警信息;
    phoenix-ui:监控可视化系统,用于平台配置、用户管理、监控信息查看、图表展示等;
    doc:包含平台的设计文档、服务启停脚本、数据库脚本等。

下载

  1. 客户端为普通Java程序
<!-- https://mvnrepository.com/artifact/com.gitee.pifeng/phoenix-client-core --><dependency>  <groupId>com.gitee.pifeng</groupId>  <artifactId>phoenix-client-core</artifactId>  <version>${最新稳定版本}</version></dependency>
  1. 客户端为springboot程序
<!-- https://mvnrepository.com/artifact/com.gitee.pifeng/phoenix-client-spring-boot-starter --><dependency>  <groupId>com.gitee.pifeng</groupId>  <artifactId>phoenix-client-spring-boot-starter</artifactId>  <version>${最新稳定版本}</version></dependency>
  1. 客户端为springmvc程序
<!-- https://mvnrepository.com/artifact/com.gitee.pifeng/phoenix-client-spring-mvc-integrator --><dependency>  <groupId>com.gitee.pifeng</groupId>  <artifactId>phoenix-client-spring-mvc-integrator</artifactId>  <version>${最新稳定版本}</version></dependency>
  • 最新稳定版本

    1.2.1.RELEASE

使用

初始化“监控数据库”

下载项目源码并解压,进入目录:/phoenix/doc/数据库设计/sql/mysql ,找到SQL脚本并执行即可。

phoenix.sql

编译源码

解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可。

配置

监控配置

监控配置文件为: monitoring.properties ,放在 classpath:/ 下会自动加载,UI端、服务端、代理端、客户端都需要有这个配置文件。如果是springboot项目也可以分环境配置,示例配置代码如下:

/*** 开发环境监控配置*/@Configuration@Profile("dev")@EnableMonitoring(configFileName = "monitoring-dev.properties")public class MonitoringUiDevConfig {}/*** 生产环境监控配置*/@Configuration@Profile("prod")@EnableMonitoring(configFileName = "monitoring-prod.properties")public class MonitoringUiProdConfig {}

监控配置项说明:

配置项含义必须项默认值
monitoring.server.url监控服务端(代理端)url
monitoring.server.connect-timeout连接超时时间(毫秒)15000
monitoring.server.socket-timeout等待数据超时时间(毫秒)15000
monitoring.server.connection-request-timeout从连接池获取连接的等待超时时间(毫秒)15000
monitoring.own.instance.order实例次序(整数),用于在集群中区分应用实例,配置“1”就代表集群中的第一个应用实例1
monitoring.own.instance.endpoint实例端点类型(server、agent、client、ui)client
monitoring.own.instance.name实例名称,一般为项目名
monitoring.own.instance.desc实例描述
monitoring.own.instance.language程序语言Java
monitoring.heartbeat.rate与服务端或者代理端发心跳包的频率(秒),最小不能小于30秒30
monitoring.server-info.enable是否采集服务器信息false
monitoring.server-info.rate与服务端或者代理端发服务器信息包的频率(秒),最小不能小于30秒60
monitoring.server-info.ip被监控服务器本机ip地址否(自动获取)
monitoring.jvm-info.enable是否采集Java虚拟机信息false
monitoring.jvm-info.rate与服务端或者代理端发送Java虚拟机信息的频率(秒),最小不能小于30秒60
  1. 监控UI端

    除了在 monitoring-{profile}.properties 文件修改监控配置外,还需要在 application-{profile}.yml 文件修改数据库配置。

  2. 监控服务端

    需要在 application-{profile}.yml 文件修改数据库配置和邮箱配置。

  3. 监控代理端

    只需在 monitoring-{profile}.properties 文件修改监控配置。

  4. 监控客户端

    只需添加监控配置。

加解密配置

除了监控配置文件外,还可以在 classpath:/ 下加入 monitoring-secure.properties 加解密配置文件,用来修改监控平台的加解密方式。但是注意各监控端加解密配置参数必须相同。这个配置不是必须的,没有此配置文件将使用默认加解密配置,加入此配置文件则必须正确配置配置项。

加解密配置项说明:

配置项含义必须项默认值
secret.type加解密类型,值只能是 des、aes、sm4 之一否,为空则不进行加解密
secret.key.desDES密钥否,secret.type=des时,需要配置
secret.key.aesAES密钥否,secret.type=aes时,需要配置
secret.key.sm4国密SM4密钥否,secret.type=ms4时,需要配置

秘钥可通过 com.gitee.pifeng.monitoring.common.util.secure.SecureUtilsTest#testGenerateKey 方法生成,然后填入配置文件。

第三方登录认证配置

监控UI端除了支持直接登录认证外,还支持第三方登录认证,只需在application.yml(或者application-{profile}.yml)配置文件中增加对应配置项即可使用。

第三方登录认证配置说明:

配置项含义必须项默认值
third-auth.enable是否开启第三方认证false
third-auth.type第三方认证类型(CAS)

apereo cas登录认证配置说明:

如果 third-auth.enable=true && third-auth.type=cas ,则需要进行cas配置。

配置项含义必须项默认值
cas.key秘钥phoenix
cas.server-url-prefixcas服务端地址
cas.server-login-urlcas登录地址
cas.server-logout-urlcas登出地址
cas.client-host-urlcas客户端地址
cas.validation-typeCAS协议验证类型(CAS、CAS3)CAS3

客户端开启监控

  • 普通Java程序

    main 方法中,调用方法 Monitor.start() 来开启监控功能,或者调用重载的方法 Monitor.start(configPath, configName) 指定监控配置文件的路径和名字来开启监控功能,如果未指定配置文件路径和名字,则配置文件需要放在 classpath:/ 下,名字必须为 monitoring.properties

  • springboot程序

    在启动类上加上注解 @EnableMonitoring 来开启监控功能,或者通过注解的两个参数来指定配置文件的路径和名字,如果未指定配置文件路径和名字,则配置文件需要放在 classpath:/ 下,名字必须为 monitoring.properties

  • springmvc程序

    web.xml 文件中配置一个监听器,来开启监控功能:

<!-- 开启监控功能 --><web-app><context-param>    <param-name>configLocation</param-name>    <param-value>classpath:monitoring.properties</param-value></context-param><listener>  <listener-class>    com.gitee.pifeng.monitoring.integrator.listener.MonitoringPlugInitializeListener  </listener-class></listener></web-app>

业务埋点

Java应用程序只要集成了监控客户端,就具有业务埋点监控的能力,通过 Monitor.buryingPoint() 方法定时监控业务运行情况,通过 Monitor.sendAlarm() 发送告警。具体使用示例如下:

// 业务埋点监控ScheduledExecutorService service = Monitor.buryingPoint(() -> {  // 假如发现了业务异常,用下面的代码发送告警  Alarm alarm = new Alarm();  alarm.setAlarmLevel(AlarmLevelEnums.ERROR);  alarm.setTitle("业务埋点监控");  alarm.setTest(false);  alarm.setCharset(Charsets.UTF_8);  alarm.setMsg("测试普通maven程序业务埋点监控!");  // alarm.setCode("001");  alarm.setMonitorType(MonitorTypeEnums.CUSTOM);  Result result = Monitor.sendAlarm(alarm);  System.out.println("发送业务告警结果:" + result.toJsonString());}, 0, 1, TimeUnit.HOURS, ThreadTypeEnums.IO_INTENSIVE_THREAD);

时钟同步

部署监控程序(监控UI端、监控服务端、监控代理端、监控客户端)的服务器集群需要进行时钟同步(NTP),保证时间的一致性!。

打包部署运行

Jar包部署

  1. 打包
    监控UI端、监控服务端、监控代理端 直接打成可执行jar。
mvn -Dmaven.test.skip=true clean package
  1. 上传jar、脚本

    a.jar路径:phoenix/target

    b.脚本路径:phoenix/doc/脚本/

  2. 运行,脚本说明如下表:

    程序 脚本 命令 含义
    监控UI端 phoenix_ui.sh ./phoenix_ui.sh start 启动
    ./phoenix_ui.sh stop 停止
    ./phoenix_ui.sh restart 重启
    ./phoenix_ui.sh status 检查状态
    监控服务端 phoenix_server.sh ./phoenix_ui.sh start 启动
    ./phoenix_server.sh stop 停止
    ./phoenix_server.sh restart 重启
    ./phoenix_server.sh status 检查状态
    监控代理端 phoenix_agent.sh ./phoenix_agent.sh start 启动
    ./phoenix_agent.sh stop 停止
    ./phoenix_agent.sh restart 重启
    ./phoenix_agent.sh status 检查状态

Docker部署

  • 方式一:Maven打包远程部署
  1. 有一台已经安装好docker环境的服务器,并且允许远程连接(以centos7下的yum方式安装的docker且使用service方式运行为例开启远程连接):
vi /usr/lib/systemd/system/docker.service  #确保:ExecStart 的后面有: -H tcp://0.0.0.0:2375  #修改完成后保存退出,刷新并重启docker服务   systemctl daemon-reload  systemctl restart docker  
  1. 在系统环境变量中添DOCKER_HOST,如下图所示:

docker_host_config

  1. 编译项目打包项目并构建镜像
 mvn -Dmaven.test.skip=true clean package docker:build  
  1. 运行

监控UI端:

docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 443:443 --pid host --net host --name phoenix-ui phoenix/phoenix-ui /bin/bash

监控服务端:

docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 16000:16000 --pid host --net host --name phoenix-server phoenix/phoenix-server /bin/bash

监控代理端:

docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 12000:12000 --pid host --net host --name phoenix-agent phoenix/phoenix-agent /bin/bash
  • 方式二:服务器本地构建docker镜像
  1. 打包
    监控UI端、监控服务端、监控代理端 直接打成可执行jar。
mvn -Dmaven.test.skip=true clean package
  1. 上传jar、Dockerfile

    a.jar路径:phoenix/target

    b.Dockerfile路径:phoenix/phoenix-ui/src/main/docker/Dockerfile、
    phoenix/phoenix-agent/src/main/docker/Dockerfile、
    phoenix/phoenix-server/src/main/docker/Dockerfile

    Dockerfile 要与对应的jar包放在同一目录下;

  2. 构建docker镜像

监控UI端:

docker build -t phoenix/phoenix-ui .

监控服务端:

docker build -t phoenix/phoenix-server .

监控代理端:

docker build -t phoenix/phoenix-agent .
  1. 运行

监控UI端:

docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 443:443 --pid host --net host --name phoenix-ui phoenix/phoenix-ui /bin/bash

监控服务端:

docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 16000:16000 --pid host --net host --name phoenix-server phoenix/phoenix-server /bin/bash

监控代理端:

docker run -itd -v /tmp:/tmp -v /liblog4phoenix:/liblog4phoenix -v /etc/localtime:/etc/localtime:ro -p 12000:12000 --pid host --net host --name phoenix-agent phoenix/phoenix-agent /bin/bash

集群部署

监控服务端、监控UI端支持集群部署,提升系统的容灾和可用性。

集群部署时的几点要求和建议:

  1. DB配置保持一致;
  2. 集群机器时钟保持一致(单机集群忽视);
  3. 建议:推荐通过nginx为集群做负载均衡。监控服务端、监控UI端均通过nginx进行访问。

集群部署架构

访问

监控UI端 访问URL:https://localhost/phoenix-ui/index ,初始账号/密码:admin/admin123guest/guest123

功能截图

首页1

首页2

服务器1

服务器2

应用程序1

应用程序2

数据库1

数据库2

数据库3

数据库4

网络

告警定义

告警记录

用户管理

操作日志1

操作日志2

异常日志1

异常日志2

监控设置

常见问题

https://gitee.com/monitoring-platform/phoenix/wikis/pages?sort_id=4438763&doc_id=935794

升级日志

https://gitee.com/monitoring-platform/phoenix/wikis/pages?sort_id=4420016&doc_id=935794

期望

欢迎提出更好的意见,帮助完善 phoenix

版权

GNU General Public License v3.0

联系

QQ群:773127639

捐助

捐助


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap