【问题标题】:Periodically check Solr is running on AWS instances (AWS monitoring)定期检查 Solr 是否在 AWS 实例上运行(AWS 监控)
【发布时间】:2017-01-20 01:30:07
【问题描述】:

我试图弄清楚如何监控 Solr 是否在一组 EC2 实例上运行。其工作方式如下:

我有一个包含一系列网络应用程序的应用程序。这些 web 应用程序中的每一个都使用 Solr 作为它们的数据库,并且 Solr 在云模式下分布在其他 3 个服务器之间:

Application EC2
 |
 |- Solr EC2 1
 |- Solr EC2 2
 |- Solr EC2 3

理想的做法是在应用服务器上定期检查 3 个 Solr 实例的 Solr 状态,例如运行:

10.X.X.1:8983/solr/admin/cores?action=STATUS
10.X.X.2:8983/solr/admin/cores?action=STATUS
10.X.X.3:8983/solr/admin/cores?action=STATUS

如果其中任何一个返回非零状态,则发送警报。我研究了 AWS CloudWatch,但我对流程指标不感兴趣,我只是想检测它是否正在运行。我发现的所有自定义检查内容都是用于统计数据,而不仅仅是直接运行与否,所以我无法检查 Solr 实例的流量之类的东西,因为有时如果没有,Solr 实例几天都没有使用一个人正在使用演示。

欢迎任何帮助,

谢谢

【问题讨论】:

  • 你可以使用 nagios。

标签: amazon-web-services amazon-ec2 solr cloud monitoring


【解决方案1】:

最终,我认为理想的方法可能是使用连接 VPC 的 Lambda 函数,该函数使用 nodejs 或 python 脚本检查站点并使用 boto3 或 nodejs SDK 记录对 cloudwatch 的响应。您可以配置 Cloudwatch 计划事件(实际上是 cronjob)以每分钟左右触发一次该功能。当然,Lambda 函数的好处是它们不依赖于您管理的任何服务器,但您必须编写一个稍微复杂一些的脚本。

或者,您可以在 cronjob 中运行从应用服务器运行的 bash 脚本,然后使用 aws cli 将数据报告给 Cloudwatch。至于 Cloudwatch 报告,您可以灵活地选择向 Cloudwatch 报告哪些数据以及如何报告。如果您决定使用在服务器上运行的 cronjob,这是一个简单的示例:

url=<ip address of server>
curl -s -o /dev/null $url
result=$?
iso_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
region=us-east-1

# zero exit code becomes 1, failure becomes 0 for 
# reporting to cloudwatch
[[ $result -gt 0 ]] && response=0 || response=1

aws cloudwatch put-metric-data \
  --metric-name SiteUpOrDown \
  --namespace Solr \
  --timestamp ${iso_date} \
  --value ${response} \
  --dimensions "Server=${url}" \
  --unit None \
  --region $region

这应该以 0s 或 1s 记录到 Cloudwatch,以了解站点是否启动或关闭。我最终会推荐一些东西来监控响应时间,而不仅仅是一个二进制结果——这样,你实际上会拥有连续的数据,这些数据在视觉上和衡量网站性能方面会更有意义。此命令将返回响应时间:

curl -s -w %{time_total}\\n -o /dev/null ${url}

如果使用它,您仍然需要测试并适当地响应非零退出代码,因为即使 curl 失败,它也会返回一个值,这可能会非常产生误导,但它会是获取连续数据的良好开端。

如果您想配置警报,您可以在报告 0 时触发 Cloudwatch 警报,并将这些警报转到 SNS 主题并最终发送到电子邮件地址或其他端点。

您还需要确保您的权限配置正确。您的 ec2 实例配置文件或服务帐户将需要写入 Cloudwatch 的权限。如果您使用 Lambda 函数,它还需要这些权限,以及附加到您的 VPC 子网的必要权限和配置(为此有一个托管策略)。

【讨论】:

  • 只是一个简短的说明——我实际上只是能够验证这对测试应用程序有效,所以我认为你应该能够在不做太多修改的情况下使用它。
  • @Jayce444 如果对您有帮助,请将此答案标记为正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 2022-01-15
  • 2018-10-23
  • 1970-01-01
相关资源
最近更新 更多