基于(siger)开发的SpringBoot探针,Java监控服务器信息
前段时间开发了一套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目录下面,亲测正常使用
注:放置好依赖文件 注意一定要重启 否则不生效!
- 这或许是对小白最友好的python入门了吧——18,定义函数
- 【深度学习】图片风格转换应用程序:使用CoreML创建Prisma
- 压力测试中存在的问题
- 这或许是对小白最友好的python入门了吧——18,用while循环处理列表
- 如何在js中将统计代码图标隐藏
- 警惕IT黑洞
- 这或许是对小白最友好的python入门了吧——17,while循环
- 泛型介绍(接上一篇,具体的事例随后呈上)
- PHP高级编程之守护进程
- 看到他我一下子就悟了-- 泛型(2)
- ExtJS4中设置tabpanel的tab高度问题
- Oracle写错误与文件离线
- 看到他我一下子就悟了-- 泛型(1)
- EXTJS4 Grid Filter 插件的使用 与后台数据解析------Extjs 查询筛选功能的实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法