如何查找日志¶
默认情况下,GraphScope遵循Python应用程序的惯例以静默模式运行。如需启用详细日志记录,请在导入graphscope后通过此命令开启。
>>> import graphscope
>>> graphscope.set_option(show_log=True)
在k8s中查找日志¶
如果您在k8s中运行GraphScope,可以使用kubectl describe和kubectl 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)
通常需要查看frontend和executor日志。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 ...