我要监视多个微服务的正常运行时间。我想打电话给每个微服务以评估其状态。如果呼叫成功,我知道应用程序为“启动”。
对于一个过于简化的用例,说我下面有以下三个电话。我想每10分钟打一次电话给他们。如果所有三个响应都为200,我想用单词“ UP”修改HTML文件,否则该文件应带有单词“ DOWN”。
GET /api/movies/$movieId
POST /api/movies
DELETE api/movies/$movieId
Express / Node.js是此轻量级应用程序的理想框架吗?如果是这样,有人可以指出我可以帮助我入门的GitHub存根吗?谢谢!
答案 0 :(得分:1)
Express和Restify如果只是API的话,都适合这种示例。最重要的是您关于返回HTML的注意事项。
我想用单词“ UP”修改HTML文件,否则该文件应带有单词“ DOWN”。
这对于Express更为合适,因为它允许您使用诸如把手,胡须,哈巴狗之类的库来进行HTML转换。
您可以使用计划的作业来检查三个应用程序的状态,并将最新状态检查存储在某个地方(数据库,平面文件等)。然后,对这项新服务上的端点/status
的请求将查询最新的状态检查,并返回一些模板化的HTML(使用诸如把手)。
或者,如果您对一些Bash感到满意,那么如果您不关心正常运行时间历史记录或其他复杂性,则可以使用linux / unix工具来执行此操作。
您可以设置apache或nginx以在/status
端点上提供文件。然后使用cron作业ping您所有的健康检查URL。如果它们都没有错误返回,则可以将nginx提供的文件更新为“ UP”,如果返回任何错误,请将文本更改为“ DOWN”。
如果您遇到麻烦,也可以在Windows上完成这种Unix方法。它的重量尽可能轻,并且非常易于部署和纠正,但是如果您想在将来大幅扩展此应用程序(例如,存储时间历史记录),则不妨使用Express。 / p>
答案 1 :(得分:1)
框架?你的孩子被宠坏了。当我还是个小伙子的时候,这里的所有地方过去都是田野...
上下创建两个html模板文件,并根据需要设置它们。
然后,您仅需要每10分钟运行几行bash作为cron作业即可。作为一个基本示例,创建statuspage.sh
:
#!/bin/bash
for http in GET POST DELETE
do
res=$(curl -s -o /dev/null -w "%{http_code}" -X $http https://$1)
if [ $res -ne 200 ]
then
cp /path/to/template/down.html /var/www/html/statuspage.html
exit $res
fi
done
cp /path/to/template/up.html /var/www/html/statuspage.html
使其可执行chmod +x statuspage.sh
并像这样./statuspage.sh "www.example.com/api"
3个curl请求,一旦失败就会停止,然后将向上或向下模板复制到您的状态页的位置。