資料介紹
軟件簡介
“phoenix” 是一個靈活可配置的開源監(jiān)控平臺,主要用于監(jiān)控應(yīng)用程序、服務(wù)器、數(shù)據(jù)庫和網(wǎng)絡(luò),通過實時收集、匯聚和分析監(jiān)控信息,實現(xiàn)在發(fā)現(xiàn)異常時立刻推送告警信息,并且提供了可視化系統(tǒng)進(jìn)行配置、管理、查看。
- 應(yīng)用程序
默認(rèn)支持Java應(yīng)用程序,監(jiān)控內(nèi)容包括:在線狀態(tài)、業(yè)務(wù)埋點。其它應(yīng)用程序需要自己開發(fā)客戶端,來調(diào)用接口與服務(wù)端或者代理端通信(心跳接口、服務(wù)器信息接口、告警接口);
- JVM
監(jiān)控內(nèi)容包括:內(nèi)存、線程、類、GC等;
- 服務(wù)器
支持Windows、Linux,監(jiān)控內(nèi)容包括:在線狀態(tài)、操作系統(tǒng)、CPU、進(jìn)程、磁盤、內(nèi)存、網(wǎng)卡、電池、傳感器;
- 數(shù)據(jù)庫
支持MySQL、Oracle、Redis; ? ? 監(jiān)控內(nèi)容: ? ? ? ? ??MySQL:會話; ? ? ? ? ??Oracle:會話、表空間; ? ? ? ? ??Redis:Redis信息全集;
-
網(wǎng)絡(luò):支持監(jiān)控網(wǎng)絡(luò)狀態(tài);
-
告警:默認(rèn)支持電子郵件。
設(shè)計
- 功能架構(gòu)
- 邏輯架構(gòu)
- 運行環(huán)境
Maven3+ ? ? Jdk1.8 ? ? Lombok ? ? Mysql5.7+
- 技術(shù)選型
核心框架:SpringBoot ? ? 安全框架:SpringSecurity、SpringSession ? ? 任務(wù)調(diào)度:JUC、SpringTask、Quartz ? ? 持久層框架:MyBatis、 MyBatis-Plus ? ? 數(shù)據(jù)庫連接池:Alibaba Druid ? ? 日志管理:SLF4J、Logback ? ? 前端框架:Layui、ECharts ? ? 監(jiān)控框架:sigar、oshi
- 模塊結(jié)構(gòu)
平臺使用Java+Layui+ECharts開發(fā),數(shù)據(jù)庫采用MySQL。
phoenix(監(jiān)控平臺父工程) ? ? ├── phoenix-common(監(jiān)控公共模塊父工程) ? ? │ ├── phoenix-common-core(監(jiān)控核心公共模塊) ? ? │ └── phoenix-common-web(監(jiān)控WEB公共模塊) ? ? ├── phoenix-client(監(jiān)控客戶端父工程) ? ? │ ├── phoenix-client-core(監(jiān)控客戶端) ? ? │ ├── phoenix-client-spring-boot-starter(監(jiān)控客戶端與springboot集成的starter) ? ? │ └── phoenix-client-spring-mvc-integrator(監(jiān)控客戶端與springmvc集成的integrator) ? ? ├── phoenix-agent(監(jiān)控代理端) ? ? ├── phoenix-server(監(jiān)控服務(wù)端) ? ? ├── phoenix-ui(監(jiān)控UI端) ? ? └── doc(文檔)
phoenix:監(jiān)控平臺父工程,管理平臺的依賴、構(gòu)建、插件等; ? ? phoenix-common:監(jiān)控公共模塊,提供平臺所有的公共代碼,包含一個監(jiān)控核心公共模塊(phoenix-common-core)和一個監(jiān)控WEB公共模塊(phoenix-common-web); ? ? phoenix-client:監(jiān)控客戶端,用于集成到Java應(yīng)用程序中實現(xiàn)業(yè)務(wù)埋點和Java應(yīng)用程序監(jiān)控信息收集,包含一個通用模塊(phoenix-client-core)和與springboot集成的starter(phoenix-client-spring-boot-starter)、與springmvc集成的integrator(phoenix-client-spring-mvc-integrator)兩個拓展模塊; ? ? phoenix-agent:監(jiān)控代理端,用于收集服務(wù)器信息和匯聚、轉(zhuǎn)發(fā)來自監(jiān)控客戶端的信息; ? ? phoenix-server:監(jiān)控服務(wù)端,是監(jiān)控平臺的核心模塊,用于匯聚、分析監(jiān)控信息,在發(fā)現(xiàn)異常時實時推送告警信息; ? ? phoenix-ui:監(jiān)控可視化系統(tǒng),用于平臺配置、用戶管理、監(jiān)控信息查看、圖表展示等; ? ? doc:包含平臺的設(shè)計文檔、服務(wù)啟停腳本、數(shù)據(jù)庫腳本等。
下載
- 源碼倉庫地址
https://gitee.com/monitoring-platform/phoenix ? ?? ? 注意:一定要下載最新發(fā)行版源碼!
- 示例代碼倉庫地址
https://gitee.com/monitoring-platform/phoenix-example
- 中央倉庫地址
- 客戶端為普通Java程序
xml ? ?
- 客戶端為springboot程序
xml ? ?
- 客戶端為springmvc程序
xml ? ?
使用
初始化“監(jiān)控數(shù)據(jù)庫”
請下載項目源碼并解壓,進(jìn)入目錄:/phoenix/doc/數(shù)據(jù)庫設(shè)計/sql/mysql ,找到SQL腳本并執(zhí)行即可。
phoenix.sql
編譯源碼
解壓源碼,按照maven格式將源碼導(dǎo)入IDE, 使用maven進(jìn)行編譯即可。
配置
監(jiān)控配置
監(jiān)控配置文件為: monitoring.properties ,放在 classpath:/ 下會自動加載,UI端、服務(wù)端、代理端、客戶端都需要有這個配置文件。如果是springboot項目也可以分環(huán)境配置,示例配置代碼如下:
java ? /** ? ?* 開發(fā)環(huán)境監(jiān)控配置 ? ?*/ ? @Configuration ? @Profile("dev") ? @EnableMonitoring(configFileName = "monitoring-dev.properties") ? public class MonitoringUiDevConfig { ? } ?? ? /** ? ?* 生產(chǎn)環(huán)境監(jiān)控配置 ? ?*/ ? @Configuration ? @Profile("prod") ? @EnableMonitoring(configFileName = "monitoring-prod.properties") ? public class MonitoringUiProdConfig { ? }
監(jiān)控配置項說明:
|配置項 ? ? ? ? ? ? ? ? ? ? ? ? ? |含義 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |必須項 ? ? ? |默認(rèn)值|? ? |--------------------------------|------------------------------------------------------------------|-------------|-----| ? |monitoring.server.url ? ? ? ? ? |監(jiān)控服務(wù)端(代理端)url ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|是 ? ? ? ? ? | ? ? ?| ? |monitoring.own.instance.order ? |實例次序(整數(shù)),用于在集群中區(qū)分應(yīng)用實例,配置“1”就代表集群中的第一個應(yīng)用實例 |否 ? ? ? ? ? |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 ? ? ? |與服務(wù)端或者代理端發(fā)心跳包的頻率(秒),最小不能小于30秒 ? ? ? ? ? ? ? ? ? ?|否 ? ? ? ? ? |30 ? ?| ? |monitoring.server-info.enable ? |是否采集服務(wù)器信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |否 ? ? ? ? ? |false | ? |monitoring.server-info.rate ? ? |與服務(wù)端或者代理端發(fā)服務(wù)器信息包的頻率(秒),最小不能小于30秒 ? ? ? ? ? ? ? |否 ? ? ? ? ? |60 ? ?| ? |monitoring.server-info.ip ? ? ? |被監(jiān)控服務(wù)器本機(jī)ip地址 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|否(自動獲取) | ? ? ?| ? |monitoring.jvm-info.enable ? ? ?|是否采集Java虛擬機(jī)信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |否 ? ? ? ? ? |false | ? |monitoring.jvm-info.rate ? ? ? ?|與服務(wù)端或者代理端發(fā)送Java虛擬機(jī)信息的頻率(秒),最小不能小于30秒 ? ? ? ? ? |否 ? ? ? ? ? |60 ? ?|
- 監(jiān)控UI端
除了在 monitoring-{profile}.properties 文件修改監(jiān)控配置外,還需要在 application-{profile}.yml 文件修改數(shù)據(jù)庫配置。
- 監(jiān)控服務(wù)端
需要在 application-{profile}.yml 文件修改數(shù)據(jù)庫配置和郵箱配置。
- 監(jiān)控代理端
只需在 monitoring-{profile}.properties 文件修改監(jiān)控配置。
- 監(jiān)控客戶端
只需添加監(jiān)控配置。
加解密配置
除了監(jiān)控配置文件外,還可以在 classpath:/ 下加入 monitoring-secure.properties 加解密配置文件,用來修改監(jiān)控平臺的加解密方式。但是注意各監(jiān)控端加解密配置參數(shù)必須相同。這個配置不是必須的,沒有此配置文件將使用默認(rèn)加解密配置,加入此配置文件則必須正確配置配置項。
加解密配置項說明:
|配置項 ? ? ? ? ? ? ? ? |含義 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|必須項 ? ? ? ? ? ? ? ? ? ? ? ? |默認(rèn)值|? ? |----------------------|-------------------------------------------|------------------------------|-----| ? |secret.type ? ? ? ? ? |加解密類型,值只能是 des、aes、sm4 之一 ? ? ? ? |否,為空則不進(jìn)行加解密 ? ? ? ? ? | ? ? ?| ? |secret.key.des ? ? ? ?|DES密鑰 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |否,secret.type=des時,需要配置 ? ? | ? ? ?| ? |secret.key.aes ? ? ? ?|AES密鑰 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |否,secret.type=aes時,需要配置 ? ? | ? ? ?| ? |secret.key.sm4 ? ? ? ?|國密SM4密鑰 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|否,secret.type=ms4時,需要配置 ? ? ?| ? ? ?|
秘鑰可通過 com.gitee.pifeng.monitoring.common.util.secure.SecureUtilsTest#testGenerateKey 方法生成,然后填入配置文件。
客戶端開啟監(jiān)控
- 普通Java程序
在 main 方法中,調(diào)用方法 Monitor.start() 來開啟監(jiān)控功能,或者調(diào)用重載的方法 Monitor.start(configPath, configName) 指定監(jiān)控配置文件的路徑和名字來開啟監(jiān)控功能,如果未指定配置文件路徑和名字,則配置文件需要放在 classpath:/ 下,名字必須為 monitoring.properties 。
- springboot程序
在啟動類上加上注解 @EnableMonitoring 來開啟監(jiān)控功能,或者通過注解的兩個參數(shù)來指定配置文件的路徑和名字,如果未指定配置文件路徑和名字,則配置文件需要放在 classpath:/ 下,名字必須為 monitoring.properties 。
- springmvc程序
在 web.xml 文件中配置一個監(jiān)聽器,來開啟監(jiān)控功能:
xml ? ?
業(yè)務(wù)埋點
Java應(yīng)用程序只要集成了監(jiān)控客戶端,就具有業(yè)務(wù)埋點監(jiān)控的能力,通過 Monitor.buryingPoint() 方法定時監(jiān)控業(yè)務(wù)運行情況,通過 Monitor.sendAlarm() 發(fā)送告警。具體使用實例如下:
// 業(yè)務(wù)埋點監(jiān)控
ScheduledExecutorService service = Monitor.buryingPoint(() -> {
? // 假如發(fā)現(xiàn)了業(yè)務(wù)異常,用下面的代碼發(fā)送告警
? Alarm alarm = new Alarm();
? alarm.setAlarmLevel(AlarmLevelEnums.ERROR);
? alarm.setTitle("業(yè)務(wù)埋點監(jiān)控");
? alarm.setTest(false);
? alarm.setCharset(Charsets.UTF_8);
? alarm.setMsg("測試普通maven程序業(yè)務(wù)埋點監(jiān)控!");
? // alarm.setCode("001");
? alarm.setMonitorType(MonitorTypeEnums.CUSTOM);
? Result result = Monitor.sendAlarm(alarm);
? System.out.println("發(fā)送業(yè)務(wù)告警結(jié)果:" + result.toJsonString());
}, 0, 1, TimeUnit.HOURS, ThreadTypeEnums.IO_INTENSIVE_THREAD);
時鐘同步
部署監(jiān)控程序(監(jiān)控UI端、監(jiān)控服務(wù)端、監(jiān)控代理端、監(jiān)控客戶端)的服務(wù)器集群需要進(jìn)行時鐘同步(NTP),保證時間的一致性!。
打包部署運行
Jar包部署
監(jiān)控UI端、監(jiān)控服務(wù)端、監(jiān)控代理端 直接打成可執(zhí)行jar,打包后可執(zhí)行jar包在 phoenix/target 目錄下,部署后通過腳本(命令)運行。啟停腳本位置在:/phoenix/doc/腳本/ 。 ? 監(jiān)控UI端 訪問URL:https://localhost/phoenix-ui/index ,初始賬號/密碼:admin/admin123,guest/guest123。
Docker部署
注意:不推薦使用docker部署,因為在docker容器中運行隔離了物理服務(wù)器環(huán)境,將無法監(jiān)控到物理服務(wù)器信息,監(jiān)控到的服務(wù)器信息變成了容器環(huán)境信息。
- 方式一:Maven打包遠(yuǎn)程部署
- 有一臺已經(jīng)安裝好docker環(huán)境的服務(wù)器,并且允許遠(yuǎn)程連接(以centos7下的yum方式安裝的docker且使用service方式運行為例開啟遠(yuǎn)程連接): ? ? ?vi /usr/lib/systemd/system/docker.service ? ? ?確保:ExecStart 的后面有: -H tcp://0.0.0.0:2375 ? ? ?修改完成后保存退出,刷新并重啟docker服務(wù): ? ? ?systemctl daemon-reload ? ? ?systemctl restart docker
- 在系統(tǒng)環(huán)境變量中添DOCKER_HOST,如下圖所示: ?
- 編譯項目打包項目并打包鏡像: ? ? ?mvn -Dmaven.test.skip=true clean package docker:build
- 運行:腳本位置在phoenix/doc/腳本/,腳本名為:docker_run.sh,可以自己根據(jù)需要靈活修改。
- 方式二:服務(wù)器本地構(gòu)建docker鏡像
- 打包可執(zhí)行jar,并上傳至服務(wù)器;
- 上傳Dockerfile文件至服務(wù)器,文件位置在:phoenix/phoenix-agent/src/main/docker/Dockerfile、phoenix/phoenix-server/src/main/docker/Dockerfile、phoenix/phoenix-ui/src/main/docker/Dockerfile, ? ? ?Dockerfile要與對應(yīng)的jar包放在同一目錄下;
- 運行Dockerfile,構(gòu)建docker鏡像;
- 運行:腳本位置在phoenix/doc/腳本/,腳本名為:docker_run.sh,可以自己根據(jù)需要靈活修改。
集群部署
監(jiān)控服務(wù)端、監(jiān)控UI端支持集群部署,提升系統(tǒng)的容災(zāi)和可用性。
集群部署時,幾點要求和建議:
- DB配置保持一致;
- 集群機(jī)器時鐘保持一致(單機(jī)集群忽視);
- 建議:推薦通過nginx為集群做負(fù)載均衡,分配域名。監(jiān)控服務(wù)端、監(jiān)控UI端均通過該域名進(jìn)行訪問。
功能截圖
?? ??
?? ??
常見問題
https://gitee.com/monitoring-platform/phoenix/wikis/pages?sort_id=4438763&doc_id=935794
期望
歡迎提出更好的意見,幫助完善 phoenix
版權(quán)
GNU General Public License v3.0
?
- 基于云平臺的環(huán)保用電監(jiān)控的應(yīng)用研究 0次下載
- 如何輕松實現(xiàn)MQTT接入阿里云IoT平臺
- MQTT接入阿里云IoT平臺使用說明
- Phoenix-Miner比特幣挖礦機(jī)
- 中億智聯(lián)云PAAS平臺PPT介紹 0次下載
- 基于阿里云的裁斷機(jī)監(jiān)控系統(tǒng)設(shè)計方案 13次下載
- Kubernetes云平臺的彈性伸縮實現(xiàn)方案 11次下載
- 云平臺監(jiān)控系統(tǒng)展箱接線原理圖免費下載 4次下載
- 基于云計算的多媒體教學(xué)平臺 3次下載
- 私有云平臺資源監(jiān)控與優(yōu)化系統(tǒng) 3次下載
- 微軟公布云計算平臺Azure收費模式細(xì)節(jié) 14次下載
- 應(yīng)用案例—三維力控接入鯤航云平臺實現(xiàn)手機(jī)APP監(jiān)控pdf資料下載 15次下載
- 基于Nagios的清華云監(jiān)控平臺 0次下載
- 華為視頻監(jiān)控開發(fā)平臺 3次下載
- 一體化機(jī)群操作系統(tǒng)Phoenix 26次下載
- ZWS云平臺應(yīng)用(6)-設(shè)備命令 164次閱讀
- 智慧CAN云應(yīng)用(1)-平臺功能 343次閱讀
- ZWS云平臺應(yīng)用(2)-設(shè)備基于SDK接入 296次閱讀
- 什么是云平臺?軟件被云平臺攔截了怎么辦 1730次閱讀
- 怎樣去設(shè)計一款基于機(jī)智云服務(wù)平臺的媒體設(shè)備控制系統(tǒng)呢 528次閱讀
- 如何在機(jī)智云平臺創(chuàng)建智能產(chǎn)品 1850次閱讀
- 組織如何有效地將業(yè)務(wù)遷移到云平臺 1975次閱讀
- 云計算的技術(shù)分析及平臺建設(shè)與應(yīng)用構(gòu)建方法研究 3972次閱讀
- 立功科技嵌入式平臺“軟”實力——云平臺接入篇 1042次閱讀
- 分布式工業(yè)物聯(lián)網(wǎng)云平臺是怎樣的 1694次閱讀
- 你知道水泵物聯(lián)網(wǎng)監(jiān)控系統(tǒng)嗎 2111次閱讀
- SDN及云計算平臺中的網(wǎng)絡(luò)性能優(yōu)化 5249次閱讀
- 云計算平臺下僵尸網(wǎng)絡(luò)的檢測技術(shù)詳解 3021次閱讀
- 云計算平臺是什么_云計算平臺的搭建_云計算平臺的功能 1.5w次閱讀
- 基于LTC6802的電池組監(jiān)控平臺的電路設(shè)計 6066次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多