如何查找日志

默认情况下,GraphScope遵循Python应用程序的惯例以静默模式运行。如需启用详细日志记录,请在导入graphscope后通过此命令开启。

>>> import graphscope
>>> graphscope.set_option(show_log=True)

在k8s中查找日志

如果您在k8s中运行GraphScope,可以使用kubectl describekubectl logs来检查集群的日志/状态。

# list graphscope pods
$ kubectl get pod
NAME                                                    READY   STATUS    RESTARTS      AGE
coordinator-syoove-79b44f7b58-ctmqb                     1/1     Running   0             10m
gs-engine-syoove-0                                      5/5     Running   0             9m53s
gs-engine-syoove-1                                      5/5     Running   0             9m46s
gs-interactive-frontend-syoove-6dd67c65fc-gn4mb         1/1     Running   0             9m53s

# describe the status of pod
$ kubectl describe pod <pod_name>

# print the logs of pod
$ kubectl logs -f <pod_name>

查找GraphScope分析引擎(GAE)的日志

在k8s环境中,分析引擎(GAE)的所有日志都汇总到coordinator pod中。因此,您可以通过以下命令查看GAE日志:

$ kubectl logs -f coordinator-syoove-79b44f7b58-ctmqb

此外,如果您能访问引擎容器,可以在/tmp/grape_engine.INFO文件中找到所有日志。

$ kubectl exec -it gs-engine-syoove-0 -c engine -- /bin/bash
$ cat /tmp/grape_engine.INFO

查找Graph Interactive Engine (GIE)的日志

在使用Graph Interactive Engine (GIE)时:

>>> # g is a property graph in session
>>> interactive = sess.gremlin(g)

通常需要查看frontendexecutor日志。frontend日志包含编译器生成的逻辑查询计划,而executor是实际的执行引擎。

前端: 您可以通过以下步骤在frontend pod的/var/log/graphscope目录中找到前端日志:

$ kubectl exec -it gs-interactive-frontend-syoove-6dd67c65fc-gn4mb -- /bin/bash
$ cd /var/log/graphscope/15334625083466732 && tail -f frontend.log

上面提到的数字15334625083466732是GIE背后的图ID。如果您创建了多个GIE实例,可以使用g.vineyard_id找到对应的图ID。

>>> # g is a property graph in session
>>> interactive = sess.gremlin(g)
>>> g.vineyard
15334625083466732

Executor: 同样地,您可以在引擎pod的executor容器内的/var/log/graphscope目录中找到执行器日志。

$ kubectl exec -it gs-engine-syoove-0 -c executor -- /bin/bash
$ cd /var/log/graphscope/15334625083466732 && tail -f executor.0.log

查找图学习引擎(GLE)的日志

使用图学习引擎(GLE)时:

>>> # g is a property graph in session
>>> lg = session.graphlearn(g, ...)

您可以在引擎pod的learning容器内的/home/graphscope/graphlearn.INFO文件中找到学习日志:

$ kubectl exec -it gs-engine-syoove-0 -c learning -- /bin/bash
$ cat /home/graphscope/graphlearn.INFO

查找Groot的日志

通常可以找到Frontend和Store角色的日志。调试时,通常还需要查找Coordinator的日志。Frontend的日志包含生成逻辑查询计划的Compiler日志,而Store的日志包含查询引擎执行的日志。您可以使用kubectl命令 kubectl logs ${POD_NAME}查找每个Pod的日志。例如,

$ kubectl get pod
NAME                                              READY   STATUS    RESTARTS      AGE
demo-graphscope-store-coordinator-0               1/1     Running   0             33d
demo-graphscope-store-frontend-0                  1/1     Running   0             33d
demo-graphscope-store-store-0                     1/1     Running   0             33d
demo-graphscope-store-store-1                     1/1     Running   0             33d

# print the last 10 lines log for frontend pod
$ kubectl logs -f demo-graphscope-store-frontend-0 --tail=10

此外,如果您可以进入pod,您可以在/var/log/graphscope目录中找到所有日志。

# frontend
$ kubectl exec -it demo-graphscope-store-frontend-0 -- /bin/bash
$ cd /var/log/graphscope && ls
graphscope-store.2023-03-11.0.log  graphscope-store.2023-03-19.0.log  graphscope-store.log ...