我正在使用 gocraft/health 来检查我的服务的运行状况并获得每个端点的指标。
我使用JSON轮询接收器来获取指标。
sink := health.NewJsonPollingSink(time.Minute*5, time.Minute*5)
stream.AddSink(sink)
我想在这里使用 healthtop和运行状况良好的 Link,它们解释了如何。
我修复了环境变量:
export HEALTHD_MONITORED_HOSTPORTS=:5001 HEALTHD_SERVER_HOSTPORT=:5002 healthd
,正如他们所说他们说“现在您可以运行它”之后。怎么,他们没有给出任何命令。我真的不明白他们的意思。
我导航到 src/github.com/gocraft/health/cmd/healthed 。我在运行时找到了 main.go ,我在控制台中找到了它
[openrtb@sd-69536 healthd]$ go run main.go
[2015-06-17T23:04:20.871743758Z]: job:general event:starting kvs:[health_host_port::5002 monitored_host_ports::5001,:5002 server_host_port::5002]
[2015-06-17T23:04:20.87810814Z]: job:poll status:success time:4 ms kvs:[host_port::5002]
[2015-06-17T23:04:20.881896459Z]: job:poll status:success time:8 ms kvs:[host_port::5001]
[2015-06-17T23:04:20.882338024Z]: job:recalculate status:success time:231 μs
[2015-06-17T23:04:23.275370787Z]: job:recalculate status:success time:6 μs
[2015-06-17T23:04:30.875230839Z]: job:poll status:success time:1573 μs kvs:[host_port::5002]
[2015-06-17T23:04:30.881415193Z]: job:poll status:success time:7 ms kvs:[host_port::5001]
.
.
但在那些端点上没有果断
localhost:5002/jobs:列出热门作业
localhost:5002/hosts:列出所有受监视的主机及其状态
它给了我 {“error”:“not_found”}
除了这个本地主机:5002/health 我得到了这个JSON响应
{
"instance_id": "sd-69536.1291",
"interval_duration": 3600000000000,
"aggregations": [
{
"interval_start": "2015-06-18T01:00:00+02:00",
"serial_number": 48,
"jobs": {
"general": {
"timers": {},
"events": {
"starting": 1
},
"event_errs": {},
"count": 0,
"nanos_sum": 0,
"nanos_sum_squares": 0,
"nanos_min": 0,
"nanos_max": 0,
"count_success": 0,
"count_validation_error": 0,
"count_panic": 0,
"count_error": 0,
"count_junk": 0
},
"poll": {
"timers": {},
"events": {},
"event_errs": {},
"count": 24,
"nanos_sum": 107049159,
"nanos_sum_squares": 6.06770682813009e+14,
"nanos_min": 1581783,
"nanos_max": 8259442,
"count_success": 24,
"count_validation_error": 0,
"count_panic": 0,
"count_error": 0,
"count_junk": 0
},
"recalculate": {
"timers": {},
"events": {},
"event_errs": {},
"count": 23,
"nanos_sum": 3501601,
"nanos_sum_squares": 6.75958305123e+11,
"nanos_min": 70639,
"nanos_max": 290877,
"count_success": 23,
"count_validation_error": 0,
"count_panic": 0,
"count_error": 0,
"count_junk": 0
}
},
"timers": {},
"events": {
"starting": 1
},
"event_errs": {}
}
]
}
但不知道这个结果是什么意思,因为它与我的
localhost:5001/health 端点,通常应按照他们所说的进行聚合。
最佳答案
您下载的是二进制文件,因此,如果您位于正确的目录中,则可以使用healthd
调用它,实际上它们提供了此示例。
HEALTHD_MONITORED_HOSTPORTS=:5020 HEALTHD_SERVER_HOSTPORT=:5032 healthd
设置env var的效果不如使用这两个值调用运行状况好(使用export或其他操作才能将更改保留到一个命令之外)。 healthtop更清楚地说明了它的含义,但是从它们的路径可以看到,它们都是
gocraft/health/cmd/healthtop
命令。他们有几个使用bash的healthtop的示例,关于运行状况的描述不那么明确,但是是相同的。如果您运行了该命令(如您的问题所示),那么您可能想要尝试
healthtop jobs
或达到此目的的某些操作。我对这个项目一无所知,也不在乎研究它,但是据我所知,healthd
只是一种从各种/health
端点收集结果并将其提供给API的服务。似乎他们打算让您在上面使用healthtop
来查看报告。还要注意这一点;
我不确定域是什么(如果在本地运行,则为localhost:5032?),但是您应该只应该能够访问localhost:5032/jobs并查看
healthd
正在运行并且正在执行某些操作。另外,请检查您的应用程序以确认其已启动并正在运行。不要直接期望它有任何输出,这就是healthtop
的目的。