如何检查 Azure 中应用程序网关的运行状况

2024-02-09

如何使用java sdk检查应用程序网关的健康状况。 我需要使用 java sdk 执行类似的操作,如下面的 azure cli 命令:

天蓝色网络应用程序网关后端运行状况显示“$1”“$2”--json \ | jq -r '.backendAddressPools[].backendHttpSettingsCollection[].servers[] | jq -r '.backendAddressPools[].backendHttpSettingsCollection[].servers[] |选择(.health == "健康") | 。地址'


我试图通过该方法获取您的管道命令的健康值health()班级的ApplicationGatewayBackendHealthServer https://learn.microsoft.com/en-us/java/api/com.microsoft.azure.management.network._application_gateway_backend_health_serverAzure Java SDK,但失败了,因为它似乎没有实现,我无法获得ApplicationGatewayBackendHealthServer通过根类的实现路径的对象Azure now.

所以我尝试搜索相关的REST API来获取命令的响应azure network application-gateway backend-health show <resource-group-name> <applicationgateway-name>在 Azure REST API 上docs https://learn.microsoft.com/en-us/rest/api/applicationgateway/get-application-gateway#request-body,但也失败了,不存在。

我尝试研究源代码AzureCLI和其他SDK,最后我从详细日志中得到了你想要的REST APIazure.details.log of AzureCLI.

满足您需求的 REST API 如下所示,为第一步。

https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/applicationGateways/<applicationGateway-name>/backendhealth?api-version=<api-version>

正在做的POST对上述带有标头的 REST API 的请求Authorization: Bearer <accessToken>,可以从响应头获取下一个动态REST APIlocation就像下面通过GET带标头的请求Authorization: Bearer <accessToken>.

https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.Network/locations/<region>/operationResults/<objectId, such as f7bfd1fd-e3ea-42f7-9711-44f3229ff877>?api-version=<api-version>

这是我的示例代码。

String AUTHORITY = "https://login.windows.net/<tenantId>";
String clientId = "<client-id on management portal(old), or application-id on Azure new portal>";
String clientSecret = "<client-secret-key>";
String subscriptionId = "<subscriptionId>";
String resourceGroupName = "<resource-group-name>";
String appGatewayName = "<applicationgateway-name>";
String apiVersion = "2016-09-01";
// Getting access token
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
ClientCredential credential = new ClientCredential(clientId, clientSecret);
Future<AuthenticationResult> future = context.acquireToken("https://management.azure.com/", credential, null);
result = future.get();
String accessToken = result.getAccessToken();
System.out.println(accessToken);

使用第一步 REST API:

// Get the response header `location` from 1st step REST API
OkHttpClient client = new OkHttpClient();
String url = String.format("https://management.azure.com/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/applicationGateways/%s/backendhealth?api-version=%s", subscriptionId, resourceGroupName, appGatewayName, apiVersion);
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, "");
Request request = new Request.Builder().url(url).header("Authorization", "Bearer "+accessToken).post(body).build();
Response response = client.newCall(request).execute();
String location = response.header("Location");
System.out.println(location);

使用第二步动态 REST API:

// Get the response content as the same as the azure-cli command `azure network applicationgateway backend-health show`
Request request2 = new Request.Builder().url(location).header("Authorization", "Bearer " + accessToken).build();
// Notice for the below code, see under the code
Response response2 = client.newCall(request2).execute();
System.out.println(response2.body().string());

Notice: 我能够通过以下方式获取内容POSTMAN,但是我得到了回复内容null对于第二步,使用OKHttp/Apache HttpClient/HttpURLConnection在爪哇。我不知道发生了什么以及为什么,即使在 Golang/Jquery 中实现的代码也可以正常工作。看来是Java中HTTP协议栈的实现造成的。

同时,如果您收到上述REST API权限相关的错误信息,请参考https://github.com/JamborYao/ArmManagement https://github.com/JamborYao/ArmManagement来解决它。

希望对您有帮助。如果您能解决第二步问题,请与我们分享解决方案,我将继续尝试解决它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 Azure 中应用程序网关的运行状况 的相关文章

随机推荐

  • 如何调用 sqlite3_errmsg 了解 sqlite3_prepare_v2 失败的原因

    基于C的函数sqlite3 prepare v2返回 1 我只是想以可读的形式了解错误消息并更正我的代码 我是从 raywinderlich 博客中将其作为教程学习的 我遇到过sqlite3 errmsg我不知道如何使用sqlite3 er
  • SensorManager:一个 SensorEventListener VS 多个侦听器

    我正在尝试将传感器测量结果记录到设备内存中 为此 我为许多传感器注册相同的 SensorEventListener 然后根据类型使用开关将它们分开 E g int type sensor getType switch type case S
  • 在 npm 构建期间找不到模块 @restart/context/forwardRef

    我最近开始遇到问题npm build升级到较新版本后react bootstrap 1 0 0 beta 6 Creating an optimized production build Failed to compile Cannot f
  • 从 Cordova 2.5 升级到 Cordova 3.0,在使用 CordovaInterface 时遇到问题

    我正在将我的项目从 Cordova 2 5 迁移到 Cordova 3 遵循中提到的迁移过程 http cordova apache org docs en 3 0 0 guide cli index md html http cordov
  • 从电子邮件中删除无效字符

    我想帮助用户在电子邮件输入中错误地输入无效字符 服务器端验证 清理前 注意 我不在前端验证电子邮件 只是清理 Coffeescript Element find input type email on change keyup event
  • Frederickson堆选择算法简单解释

    Frederickson 的堆选择算法是否有任何简单的解释 可以在 O k 时间内找到在线任何地方可用的最小堆中的第 k 个排序元素 如果没有 任何人都可以解释该算法的内部原理吗 尝试谷歌搜索 frederickson heap selec
  • 如何将自定义默认生成操作关联到 Visual Studio 中的自定义文件类型?

    我有一个为自定义文件类型构建的语言服务 此外 我还在 MSBuild 项目文件中创建了一个自定义目标 构建操作 但是 我无法找到任何方法将该构建操作默认关联到我的自定义文件扩展名 例如 如果添加 cs 文件 则构建操作默认为 编译 我想为我
  • php strip_tags 删除所有内容

    我在用户输入上使用 strip 标签来删除所有可能的标签 但 strip tags php 函数也会删除 例如 某些用户可能会使用表情符号 gt 或者这甚至可以在算法等时使用 是否有任何解决方案允许带状标签上的 问题是在这种情况下 foo
  • MySQL 工作台插入

    我正在使用 MySQL Workbench 5 2 28 来设计我的数据库架构 我需要将默认数据插入到一些表中 这可以使用 插入 选项卡来完成 然而 它似乎只允许手动输入数据 一次一行 我有一个包含数百行的 OUTFILE 我想插入这些行
  • React SetState 不调用 render

    我将我的函数发送到子组件callBack 在父级中 我有一个函数setState method onInputUpdated id var array let char id slice 1 console log this state s
  • ASP.NET MVC;一次只能为一名用户编辑选项

    我有一个表 其中包含三个字段和一些记录 如果用户要编辑表中的记录 则不允许其他用户同时编辑该记录 我可以采取哪些步骤来实现这一目标 许多具有桌面应用程序背景的人会想知道这是如何在 Web 应用程序中完成的 锁定记录标志 桌面世界中的一种方法
  • 如果与 ClientHttpRequestInterceptor 一起使用,Spring Resttemplate postforobject 将返回 null 作为对象响应

    我正在尝试使用休息服务 并且正在使用 Spring 发布一些数据RestTemplate postForObjectMethod但我收到空响应 即使我可以在有效负载中看到请求和响应 更新 我正在使用拦截器实现ClientHttpReques
  • CI::报告没有为 Ruby Test::Units 生成 xml?

    我正在尝试使用 CI reporter 生成 ruby 单元测试报告 我的耙文件 require rake require rake testtask require rake packagetask require rake requir
  • 两列并排可滚动

    我的页面看起来像这样 我有两个单独的 div 一个是产品过滤器 另一个是产品 div 产品内容可以显示 40 个产品或 100 个产品或无 即内容可以稍后更改 同样 我的过滤器的长度也可以变化 我希望以某种方式使过滤器 div 可滚动 并使
  • 如何将 AWS S3 url 转换为 boto 的存储桶名称?

    我正在尝试访问http s3 amazonaws com commoncrawl parse output segment http s3 amazonaws com commoncrawl parse output segment 桶与
  • OpenCL 动态并行/GPU 生成的线程?

    CUDA 5 刚刚被释放 http nvidianews nvidia com Releases NVIDIA Releases CUDA 5 Making Programming With World s Most Pervasive P
  • Stream 和 Spring Data 的优点

    有些人重写 CrudRepository 的方法 findAll 以返回 Stream java 8 但我看到他们最终将 Stream 转换为 List 以便通过其余控制器发送它 他们为什么使用 Stream 在这里使用 Stream 有什
  • Grails 集成测试不会回滚

    我正在从这本书中学习grails Grails 的实际应用 http my safaribooksonline com book web development ruby 9781933988931 并且我正在尝试从示例中运行集成测试 在书
  • 使用 VLC 托管无限视频循环流

    我想通过 WIFI 网络从带有 VLC 播放器的电脑向智能手机提供视频流以进行回归测试 视频在智能手机上播放完毕后应自动重新开始 我目前使用 rtsp 作为协议和循环选项 但这不是强制性的 问题是 每次视频重新启动时 都需要进行新的 rts
  • 如何检查 Azure 中应用程序网关的运行状况

    如何使用java sdk检查应用程序网关的健康状况 我需要使用 java sdk 执行类似的操作 如下面的 azure cli 命令 天蓝色网络应用程序网关后端运行状况显示 1 2 json jq r backendAddressPools