javascript - 使用 javascript 获取 arangodb 的状态 url
问题描述
我需要获取“ http://localhost:8529/_admin/cluster/health ” url,它可以检查 arangodb 集群的状态为 javascript。
它由js文件组成,如下所示。
// 20200611141601
// http://203.255.92.193:8529/_admin/cluster/health
{
"Health": {
"PRMR-3f6a6958-cef1-4326-a7c6-fb20cd921726": {
"Timestamp": "2020-06-09T04:32:09Z",
"SyncStatus": "SERVING",
"Status": "GOOD",
"Host": "39f18558358b46eca3504bd0b4ebed26",
"Version": "3.6.3-1",
"SyncTime": "2020-06-09T04:32:08Z",
"Endpoint": "tcp://203.255.92.194:8530",
"LastAckedTime": "2020-06-09T04:32:08Z",
"Engine": "rocksdb",
"ShortName": "DBServer0001",
"Role": "DBServer",
"CanBeDeleted": false
},
"CRDN-4063e580-4ae0-4b89-ba5a-5b4c5616cb20": {
"Timestamp": "2020-06-09T12:03:09Z",
"SyncStatus": "SERVING",
"Status": "GOOD",
"Host": "c424ee3654814288904d1f31c257e038",
"ShortName": "Coordinator0019",
"Engine": "rocksdb",
"Version": "3.6.3-1",
"SyncTime": "2020-06-09T12:03:08Z",
"LastAckedTime": "2020-06-09T12:03:09Z",
"Endpoint": "tcp://203.255.92.193:8529",
"Role": "Coordinator",
"CanBeDeleted": false
我已经尝试过了,但它是未定义的。
const url = require('url');
const address = 'http://localhost:8529/_admin/cluster/health';
const parsedData= url.parse(address, true);
console.log(parsedData.Health);
console.log(parsedData.Status);
console.log(parsedData.search);
const queryData = parsedData.query;
console.log(queryData.Health);
我不知道该怎么做。是否有使用 javascript获取“ http://localhost:8529/_admin/cluster/health ”的库函数
解决方案
url.parse()
仅解析您传递给它的 URL 字符串:
console.log(parsedData);
/*
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8529',
port: '8529',
hostname: 'localhost',
hash: null,
search: null,
query: [Object: null prototype] {},
pathname: '/_admin/cluster/health',
path: '/_admin/cluster/health',
href: 'http://localhost:8529/_admin/cluster/health'
}
*/
您需要向服务器发出实际请求,例如:
const http = require("http");
http.get("http://localhost:8529/_admin/cluster/health", res => {
let data = "";
res.on("data", chunk => {
data += chunk;
});
res.on("end", () => {
try {
const parsedData = JSON.parse(data);
if (parsedData.error) {
throw new Error("Server replied with error code " + parsedData.code);
}
console.log("Status: Node ID");
for (node in parsedData.Health) {
console.log(parsedData.Health[node].Status + ": " + node);
}
} catch(err) {
console.log("Error: " + err.message);
}
});
res.on("error", err => {
console.log("Error: " + err.message);
});
});
该示例假定 Coordinator 节点在端口 8529 上本地运行,并且对集群禁用了身份验证。
推荐阅读
- r - R中具有不同参数的一个函数的并行执行
- cassandra - SBT 驱逐较旧的 jar,这是必需的传递依赖项
- c++ - 为什么我的代码包含错误分段错误(核心转储)?
- firebase - How to filter a collection with with another collection?
- spring - SpringBook + VueJS + SpringSecurity Cookie is not passed
- python - 从 python 颜色图中删除灰色框
- tensorflow - 将模型保存在 gpflow 2 中
- javascript - 通过 JSON.parse() 解析 json 内容时出错
- java - 删除依赖后无法执行目标 org.openjfx:javafx-maven-plugin:0.0.1:run (default-cli)
- javascript - [对象 HTMLDivElement]