前段时间开发了一套Java获取服务器信息监控探针
后端采用的技术为:
- springboot
- springboot-security(用户接口安全认证,防止非法爬取服务器信息入侵服务器)
- sigar(获得服务器信息)
- swagger(提供详细的接口文档)
注:sigar是有依赖的,可能部署起来会比较麻烦,有能力的可以换oshi(Arthas底层)
oshi没有这么多依赖,部署比较简单一些
oshi地址:https://github.com/oshi/oshi
开源地址:
Sigar插件地址:
https://github.com/hiparker/system-monitor/tree/master/sigar%E6%8F%92%E4%BB%B6%E5%8C%85
目录结构:
使用场景
在没有使用 分布式的项目,进行集群管理时
有时候来了做服务器监控的需求
如果没有特殊要求 阿里开源的 Arthas 是非常好用的java诊断工具
但是 如果要做 监控数据化的话 就需要自己开发了
这里我分享一套 最近刚写的Java探针
运行起来后查看接口
API接口文档
127.0.0.1:7000/doc.html
使用主服务 去定时抓接口,即可做到,集群下多服务器监控
运行
nohup java -jar system-monitor.jar &
有能力的 可以配置一下 开机启动
踩坑指南:
1. 使用Sigar在不同操作系统
Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件。
底层主要由C来编写,所以会比较吃依赖
如果是windows系统,那么需要
sigar-amd64-winnt.dll(64位的)或者是sigar-x86-winnt.dll(32位系统的)
放在 jdk
的 bin
目录下
如果是Linux系统,那么需要
libsigar-amd64-linux.so(64位系统的)或者libsigar-x86-linux.so(32位系统的)
放在 java.library.path
下
接口文档里提供了 查询Linux的java.library.path方法
在我linux系统输出的是:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
只需要放入其中一个文件夹里面就行,我这里放的是/usr/lib64目录下面,亲测正常使用
注:放置好依赖文件 注意一定要重启 否则不生效!