显然,利用kube-prometheus-stack对AI的公开样本进行监视

首先

根据上次的实验,显然 AI 在 Kubernetes 上进行了公开样本的执行。这次继续进行实验,尝试使用 kube-prometheus-stack 监控其结果。

我在prometheus/grafana中使用kube-prometheus-stack这个开源软件来监控通过prometheus-community提供的Kubernetes资源,并且它还预先定义了许多用于可视化的专用仪表板。在这些仪表板中,我考虑是否可以同时监控Evidently AI的公开样本指标。

系统环境

    • PC: Windows 11

 

    • WSL2: Ubuntu 20.04

 

    • Docker 20.10.17

 

    • Python 3.8.10

 

    • Amazon Elastic Container Registry (ECR)

AWS CLIがインストールされていることが必要です。

这次我们使用ECR作为Kubernetes获取Docker映像的注册表,但是您可以使用另一个容器注册表来替代它。

建造步骤

作为前提,需要确保 Evidently AI 公开示例已在 Kubernetes 上进行了全面的执行。

1. 环境准备就绪。

首先,启动minikube。

# minikubeの起動
minikube start --kubernetes-version=v1.23.2 --memory=6g \
  --bootstrapper=kubeadm \
  --extra-config=kubelet.authentication-token-webhook=true \
  --extra-config=kubelet.authorization-mode=Webhook \
  --extra-config=scheduler.bind-address=0.0.0.0 \
  --extra-config=controller-manager.bind-address=0.0.0.0

# 認証情報の設定(新規にminikubeクラスタを作成した場合)
# ECRにアクセスするために設定します。対話形式でAWSの認証情報を入力します。
minikube addons configure registry-creds
#----- 対話形式での入力(ここから) -----
Do you want to enable AWS Elastic Container Registry? [y/n]: y
-- Enter AWS Access Key ID: <アクセスキーID>
-- Enter AWS Secret Access Key: <シークレットキー>
-- (Optional) Enter AWS Session Token: <空のままEnter>
-- Enter AWS Region: <リージョン名>
-- Enter 12 digit AWS Account ID (Comma separated list): <AWSアカウントID>
-- (Optional) Enter ARN of AWS role to assume: <空のままEnter>
# これ以降の質問はすべて"n"を入力
#----- 対話形式での入力(ここまで) -----

# 認証設定の有効化
minikube addons enable registry-creds

接下来,我们要安装kube-prometheus-stack。安装需要使用helm,而helm则使用asdf来进行准备。

# helmのインストール
# 安定版の最新バージョンをインストールする
asdf plugin-add helm
asdf list-all helm
asdf install helm 3.9.0
asdf global helm 3.9.0

# Helmリポジトリ情報の取得
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# kube-prometheus-stackのインストール
helm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack \
    --install --version 35.2.0 \
    --namespace prometheus --create-namespace \
    --set grafana.ingress.enabled=true \
    --set grafana.ingress.ingressClassName=nginx \
    --wait

2. 添加 kube-prometheus-stack 的 ServiceMonitor

为了从AI监控中计算的指标中读取,kube-prometheus-stack需要设置一个名为ServiceMonitor的自定义资源。因此,需要创建一个用于这个目的的清单文件。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: ai-monitor-clusterip
  namespace: default
  labels:
    release: kube-prometheus-stack
spec:
  endpoints:
    - path: /metrics
      targetPort: 8085
      interval: 10s
  selector:
    matchLabels:
      app: ai-monitor-clusterip
    ai-monitorのアプリはPrometheus向けに/metricsのパスでメトリクスを取得できる口を設定しています。

3. 生成各种Kubernetes资源

生成Kubernetes资源。要执行以下命令,需要在Kubernetes上运行Evidently AI公开示例,执行步骤包括“3. 构建AI监控的Docker镜像并推送到ECR”和“4. 创建Kubernetes清单文件”。

# ai-monitorのリソース生成
kubectl apply -f manifests/depsvc_ai-monitor.yaml

# ServiceMonitorの生成
kubectl apply -f manifests/servicemonitor_ai-monitor.yaml

4. 进行端口转发

我们将进行端口转发,以便从Minikube的外部进行访问。

# prometheusのポートフォワード(バックグラウンド実行)
kubectl --namespace prometheus port-forward svc/kube-prometheus-stack-prometheus --address 0.0.0.0 9090:9090 >/dev/null &
# grafanaのポートフォワード(バックグラウンド実行)
kubectl --namespace prometheus port-forward svc/kube-prometheus-stack-grafana --address 0.0.0.0 3000:80 >/dev/null &
# ai-monitorのポートフォワード(バックグラウンド実行)
kubectl port-forward svc/ai-monitor-clusterip --address 0.0.0.0 8085 >/dev/null &

5. 发送数据并确认仪表板

从客户端发送数据,并在Grafana仪表盘上确认结果。

# Evidently AIサンプルのフォルダに移動
cd evidently/examples/integrations/grafana_monitoring_service

# データ送信のClient App実行
# これを実行すると2秒間隔で連続的にデータ送信する処理が約20分間動きます。
python scripts/example_run_request.py

一旦数据发送开始后,访问Grafana仪表板的网址 http//localhost:3000。
在kube-prometheus-stack中,Grafana的管理员用户密码是通过Kubernetes的Secret进行单独设置的。可以用以下命令确认密码。

# grafanaのadminユーザのパスワード確認
kubectl get secret kube-prometheus-stack-grafana -n prometheus \
  -o jsonpath='{.data.admin-password}' | base64 --decode; echo

在登录 Grafana 后,从菜单中选择 Create > Import。

sub004-01.png

请将位于这里的json文件粘贴到evidently/examples/integrations/grafana_monitoring_service/dashboards文件夹中,并加载它。
在此过程中,请删除json文件中的UID部分的描述(可能有多个地方)。

          "datasource": {
            "type": "prometheus",
            "uid": "PBFA97CFB590B2093"     この部分を削除。複数個所あるのでそれぞれ削除します。
          },
sub004-02.png
sub004-03.png

完成和刪除步驟

我们将对此次创建的资源进行结束和删除,具体操作如下。

# ポートフォワードの終了
# job番号は実際の数値に変更してください
jobs
kill %1
kill %2
kill %3

# kubernetesリソースの削除
cd ~
kubectl delete -f manifests/depsvc_ai-monitor.yaml \
  -f manifests/servicemonitor_ai-monitor.yaml

# kube-prometheus-stackのアンインストール
helm uninstall kube-prometheus-stack -n prometheus

# minikubeの停止
minikube stop

最后

kube-prometheus-stack的安装即可立即使用,非常方便。只需添加ServiceMonitor即可获取应用程序的指标,因此可以同时进行基础设施监控和应用程序监控,非常好。

广告
将在 10 秒后关闭
bannerAds