首页 > 解决方案 > 如何通过命令行检查 Jupyter 活动笔记本

问题描述

我有一个运行 Jupyterhub 版本 0.8.1+ 的 AWS EMR,我想检查是否有任何活动的笔记本正在运行任何代码。我尝试了以下命令,但它们似乎没有输出我在此处查找的内容,因为用户服务器始终在运行,并且笔记本可以在不执行任何代码的情况下运行。

# only lists running servers and jovyan is always running.
sudo docker exec jupyterhub jupyter notebook list
# No useful information outputted
curl -k -i -H "Accept: application/json" "https://localhost:9443/api/sessions"
# always lists processes regardless of running notebooks
ps aux | grep ipykernel
# The last_activity only updates when a user creates a new file or folder in the ui.
curl -k https://localhost:9443/hub/api/users/$user -H "Authorization: token $admin_token" | jq -r .last_activity
curl -k https://localhost:9443/hub/api/users -H "Authorization: token $admin_token" | jq -r .last_activity

我正在关注这个 AWS 博客,以在终止集群之前检查整个 EMR 是否空闲,但他们似乎从未完全实施过 jupyter 检查。 https://aws.amazon.com/blogs/big-data/optimize-amazon-emr-costs-with-idle-checks-and-automatic-resource-termination-using-advanced-amazon-cloudwatch-metrics-and- aws-lambda/ 引用的大部分文件都可以在 Github 中找到https://github.com/septian-putra/emr-monitoring

标签: amazon-web-servicesjupyter-notebookjupyteramazon-emr

解决方案


要查看笔记本是否因“忙”而处于“空闲”状态,您可以curl -ks https://localhost:9443/user/jovyan/api/kernels -H "Authorization: token ${admin_token}" 使用此命令运行,您只需将其放入带有 a 的简单 if 语句grep -q中,以获得真假空闲值。

if [ $(curl -ks https://localhost:9443/user/jovyan/api/kernels -H "Authorization: token ${admin_token}" | grep -q "busy") ]; then
    JUPYTER_BUSY_NOTEBOOKS=1
else
    JUPYTER_BUSY_NOTEBOOKS=0
fi

(curl -ks 用于静默输出并忽略 ssl。jovyan 是我的管理员用户)

文档 https://jupyter-kernel-gateway.readthedocs.io/en/latest/websocket-mode.html#http-resources /api/sessions 也可能有用。


推荐阅读