代码拉取完成,页面将自动刷新
JavaDoc : http://accjiyun.oschina.io/osmonitor/doc
监控一般流程:
1.首先完成身份认证;
2.获取OpenStack计算节点列表即物理机(Hypervisor),并且获取VCPU、内存、磁盘等信息;
3.获取所有虚拟机实例(Instance)信息,或选择运行在某个计算节点物理机上的虚拟机实例信息;
4.从选定特定实例获取相关的监控指标(Meter),并获取指标对应的监控值(Sample),在表现层通过图表等信息展示。
所有的操作的前提都需要先完成身份认证。
身份验证有两种方式:
修改auth.properties
修改验证信息
authURL=http://controller2:5000/v3/
domain=Default
username=admin
password=pass123456
projectName=admin
使用认证工厂返回认证客户端实例,不为空则认证成功:
AuthService authService = new AuthFactory();
Assert.assertNotNull(authService.auth());
Authentication user = new Authentication();
user.setAuthURL("http://controller2:5000/v3/");
user.setDomain("Default");
user.setProjectName("admin");
user.setUserName("admin");
user.setPassword("pass123456");
AuthService authService = new AuthFactory();
Assert.assertNotNull(authService.auth(user));
计算节点物理机
List<? extends Hypervisor> hypervisors = service.getHypervisors();
LOGGER.info("所有计算节点信息如下:");
for (Hypervisor h : hypervisors) {
LOGGER.info(h.getHypervisorHostname() + " " + h.toString());
}
HypervisorStatistics statistics = service.getTotalStatistics();
LOGGER.info(statistics.toString());
虚拟机实例层,即在计算节点上创建的每一个Instance.
for (Server s : service.getAllInstance()) {
LOGGER.info(s.toString());
}
boolean isHost = true;
for (Server s : service.getInstancesByHypervisorID("a816a5a04556df0382e8fc7da377a91a45ff480073f00f11f556a51f")) {
if (!s.getHostId().equals("a816a5a04556df0382e8fc7da377a91a45ff480073f00f11f556a51f")) {
isHost = false;
}
}
Assert.assertTrue(isHost);
boolean isHost = true;
for (Server s : service.getInstancesByHypervisorHostname("compute1")) {
if (!s.getHypervisorHostname().equals("compute1")) {
isHost = false;
}
}
Assert.assertTrue(isHost);
监控对象,可以是虚拟机实例、镜像、浮动IP等,其ID也对应相等。
for (Resource r : service.getResourceList()) {
LOGGER.info(r.toString());
}
boolean result = false;
if (service.getResourceById("1eea344d-79c4-408e-8fac-c8801e0fd702").getId()
.equals("1eea344d-79c4-408e-8fac-c8801e0fd702")) {
result = true;
}
Assert.assertTrue(result);
监控指标,例如:内存占用,网络IO,磁盘IO等等。
for (Meter m : service.getMeterList()) {
LOGGER.info(m.toString());
}
boolean result = true;
for (Meter m : service.getMeterListByName("memory")) {
if (!m.getName().equals("memory")) {
result = false;
}
}
Assert.assertTrue(result);
boolean result = true;
for (Meter m : service.getMeterListByResourceId("1eea344d-79c4-408e-8fac-c8801e0fd702")) {
if (!m.getResourceId().equals("1eea344d-79c4-408e-8fac-c8801e0fd702")) {
result = false;
}
}
Assert.assertTrue(result);
监控值,是每个采集时间点上meter对应的值
for (Sample s : service.getSampleList()) {
LOGGER.info(s.toString());
}
boolean result = false;
if (service.getSampleById("61e8d94a-8bf9-11e7-9325-984be16b6791").getId()
.equals("61e8d94a-8bf9-11e7-9325-984be16b6791")) {
result = true;
}
Assert.assertTrue(result);
boolean result = true;
List<? extends Sample> samples = service.querySamples(SampleCriteria.create().resource("1eea344d-79c4-408e-8fac-c8801e0fd702"));
for (Sample s : samples) {
if (!s.getResourceId().equals("1eea344d-79c4-408e-8fac-c8801e0fd702")) {
result = false;
}
}
Assert.assertTrue(result);
boolean result = true;
List<? extends MeterSample> samples = service.querySamples("memory", SampleCriteria.create().resource("1eea344d-79c4-408e-8fac-c8801e0fd702"));
for (MeterSample s : samples) {
if (!s.getResourceId().equals("1eea344d-79c4-408e-8fac-c8801e0fd702")) {
result = false;
}
}
Assert.assertTrue(result);
SampleCriteria
的使用可以通过resourceId
、projectId
分别筛选特定Resource、Project下的监控值,
还可以通过采集的时间,通过LT
、GT
、LTE
、GTE
、EQUALS
时间前后的对比来筛选。
SampleCriteria sc = new SampleCriteria()
.resource("1eea344d-79c4-408e-8fac-c8801e0fd702")
.project("043b9d0dfbc44982b6eda7857975fce9")
.timestamp(SampleCriteria.Oper.GT, System.currentTimeMillis() - (24 * 60 * 60 * 1000))
.timestamp(SampleCriteria.Oper.LT, System.currentTimeMillis());
boolean result = true;
for (Sample s : service.querySamples(sc)) {
if (!s.getResourceId().equals("1eea344d-79c4-408e-8fac-c8801e0fd702")
|| !s.getProjectId().equals("043b9d0dfbc44982b6eda7857975fce9")
|| !Timestamp.valueOf(s.getTimestamp()).after(new Timestamp(System.currentTimeMillis() - (24 * 60 * 60 * 1000)))
|| !Timestamp.valueOf(s.getTimestamp()).before(new Timestamp(System.currentTimeMillis()))) {
result = false;
}
}
Assert.assertTrue(result);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。