I have Cylc 8.3.1 installed with whichever Cylc UI Server was current with that release.
The Hub and UI Servers run on one host (the WUI host) and the schedulers run on other hosts. All hosts share a file system for home directories. The WUI runs under a local user (jupyterhub) and uses sudo to launch UI Servers. The UI server accounts can run commands through ssh without a password to the scheduler hosts. This bit works fine.
The cylc hub is installed into a local conda environment in the jupyterhub account’s home directory.
The global.cylc
file is installed locally in /opt/cylc8/flow
on all relevant hosts. It provides a wealth of platforms, most of which are not relevant to this question.
Each user has their own cylc wrapper and cylc environments. However we have a default cylc wrapper and default cylc environment for calls to cylc from the UI Servers to the scheduler hosts that don’t come with enough information for us to determine the correct wrapper to target. This means that the calls to cylc psutil
resolve and return successfully.
However, we can’t see Cylc job logs in the UI server, even though they’re right there on the filesystem:
$ ls /home/${user}/cylc-run/${workflow}/log/job/${cycle_point}/${task}/*
[...]/01:
job job-activity.log job.err job.out job.status job.xtrace
[...]/02:
job job-activity.log job.err job.out job.status job.xtrace
[...]/03:
job job-activity.log job.err job.out job.status job.xtrace
[...]/04:
job job-activity.log job.err job.out job.status job.xtrace
[...]/NN:
job job-activity.log job.err job.out job.status job.xtrace
When I tail the uiserver logs in /home/${user}/.cylc/uiserver/log/log
I only see:
2024-08-09T09:04:17 INFO jacintar: authorized to read
for this access. The hub logs also include:
[I 2024-08-09T09:04:17.643 CylcHubApp log:192] 200 POST /user/${user}/cylc/graphql (jacinta@::ffff:10.19.96.12) 586.03ms
Scheduler logs work just fine:
and in the uiserver logs I see (edited):
2024-08-09T09:08:20 INFO $ cylc cat-log --mode=tail --prepend-path ${user}/$workflow -f scheduler/01-start-01.log
The same appears in the Cylc hub logs.
I have read the documentation for cylc cat-log
a few times, and I can’t work out what the correct command would be to list out all of the job logs for a given cycle point/job/job submission attempt.
This gives me the job output (edited):
$ ./cylc cat-log --mode=tail --prepend-path \~${user}/${workflow}/ -f job/${cycle_point}/${task}/04/job.out
# $host}:/home/${user}/cylc-run/${workflow}/log/job/${cycle_point}/${task}/job.out
Workflow : ${workflow}
Job : ${cycle_point}/${task}/04 (try 4)
[...]
But this doesn’t give me a list of job files:
$ ./cylc cat-log --mode=list-dir --prepend-path \~${user}/${workflow}/ -f job/${cycle_point}/${task}/04
config/01-start-01.cylc
config/20240809T051442+0000-rose-suite.conf
config/flow-processed.cylc
install/01-install.log
scheduler/01-start-01.log
Neither explain why nothing appears in the user’s UI server logs or the hub logs when I try to access these through the UI server.
I’m not sure how a UI Server can successfully call cylc psutil
to another host, and not be able to call cylc cat-log
locally. I’m sure it’s a configuration issue on my side, but I can’t guess what. Any assistance gratefully accepted.