【flink 集群监控】python如何获取flink集群应用程序数量?

你可以使用 Python 的 subprocess 模块来执行命令行,并捕获其输出。以下是一段示例代码,用于获取 YARN 应用程序中名称包含 jupiterDev 的应用程序数量:

import subprocess

# 构造要执行的命令
command = "yarn application -list | grep jupiterDev | wc -l"

# 执行命令并捕获输出
try:
    output = subprocess.check_output(command, shell=True)
    count = int(output.strip())
    print("Number of JupiterDev applications: {}".format(count))
except subprocess.CalledProcessError as e:
    print("Command '{}' returned non-zero exit status {}".format(e.cmd, e.returncode))

该代码会执行 yarn application -list | grep jupiterDev | wc -l 命令,并将其输出转换为整数类型的变量 count。最后输出包含 JupiterDev 应用程序数量的字符串。如果命令返回非零退出码,则会打印错误信息。

是的,同时你可以使用以下 REST API 获取 YARN 应用程序列表:

GET http://<yarn-resourcemanager-host>:8088/ws/v1/cluster/apps

其中, 是 YARN ResourceManager 所在的机器的主机名或 IP 地址。

该 REST API 将返回一个 JSON 格式的响应,其中包含所有正在运行的 YARN 应用程序的详细信息,例如应用程序 ID、名称、用户、队列、状态等。你可以根据自己的需要来解析和处理这些信息。

# -*- coding: utf-8 -*-
# author:laidefa
import requests
import time
# 定义参数
yarn_application_url="http://kafka1:8088/ws/v1/cluster/apps?states=RUNNING"

# 访问prometheus API获取数据
timestamp= int(time.time())

res = requests.get(yarn_application_url)

# 解析响应中包含的 JSON 数据
if res.ok:
    data = res.json()
    count = data["apps"]["app"]
    print("Number of running applications: {}".format(len(count)))
else:
    print("Request failed with status code {}".format(res.status_code))

该代码会向 YARN ResourceManager 发送一个 HTTP GET 请求,获取所有状态为 RUNNING 的 YARN 应用程序的详细信息。然后,它会解析响应中包含的 JSON 数据,并计算 RUNNING 应用程序的数量。最后输出包含 RUNNING 应用程序数量的字符串。
在这里插入图片描述

运行结果:

Number of running applications: 2

猜你喜欢

转载自blog.csdn.net/u013421629/article/details/130063758
今日推荐