Depurando tarefas

Use as dicas de resolução de problemas para aprender a solucionar problemas de tarefas do IBM Cloud® Code Engine e de execuções de sua tarefa.

Limites de tarefa a considerar

O número máximo de tarefas que você pode ter por projeto é 100. Você está limitado a um total de 100 execuções de tarefa por projeto antes de precisar remover ou limpar as antigas.

Para obter mais informações sobre limites para tarefas, incluindo memória e CPU, consulte Limites e cotas para Code Engine.

Com a CLI, é possível usar o comando ibmcloud ce project get para exibir informações sobre limites e uso atual. Por exemplo:

ibmcloud ce project get --name myproject

Saída de exemplo

Getting project 'myproject'...
OK
Name:                                      myproject
ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status:                                    active
Enabled:                                   true
Application Private Visibility Supported:  true
Selected:                                  true
Region:                                    us-south
Resource Group:             default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age:                        52d
Created:                                   Tue, 28 Sep 2021 05:12:16 -0500
Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500
Quotas:
Category                                  Used  Limit
App revisions                             2    120
Apps                                      1     40
Build runs                                1     100
Builds                                    2     100
Configmaps                                2     100
CPU                                       0     128
Ephemeral storage                         0     512G
Functions                                 0     20
Instances (active)                        0     250
Instances (total)                         0     2500
Job runs                                 13     100
Jobs                                      2     100
Memory                                    0     512G
Secrets                                   6     100
Subscriptions (cron)                      0     100
Subscriptions (IBM Cloud Object Storage)  0     100
Subscriptions (Kafka)                     0     100

Obtendo logs para minhas tarefas

Os logs podem ser úteis para solucionar problemas quando você executa tarefas. É possível visualizar logs da tarefa no console ou com a CLI.

Ao visualizar logs no console, deve-se criar uma instância do IBM Cloud Logs na mesma região de seu projeto do Code Engine. Você não é obrigado a criar esta instância antes de trabalhar com a sua tarefa do Code Engine. O Code Engine facilita ativar a criação de logs para suas tarefas. É possível visualizar logs da tarefa após você incluir recursos de criação de log. Para obter mais informações, consulte Visualizando logs da tarefa por meio do console.

Ao trabalhar com a CLI, é possível exibir logs de todas as instâncias de sua tarefa em execução ou exibir logs de uma instância específica de sua tarefa.

  1. Use o comando ibmcloud ce jobrun list para listar todas as suas execuções de tarefas definidas; por exemplo,

    ibmcloud ce jobrun list
    
  2. Use o comando ibmcloud ce jobrun get para obter os detalhes de sua execução da tarefa, incluindo o nome das instâncias para a execução da tarefa; por exemplo,

    ibmcloud ce jobrun get --name myjobrun
    

    Saída de exemplo

    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    Getting events of jobrun 'myjobrun'...
    Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances.
    OK
    Name:          myjobrun
    [...]
    Created:       2021-03-03T14:47:04-05:00
    Image:                icr.io/codeengine/firstjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1 - 4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          28m
        Instance Statuses:
        Succeeded:  4
        Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    28m         28m
        Running   True    28m         28m
        Complete  True    28m         28m
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    29m (x8 over 29m)  batch-job-controller  Updated JobRun "myjobrun"
        Normal  Completed  29m                batch-job-controller  JobRun completed successfully
    Instances:
        Name          Running  Status     Restarts  Age
        myjobrun-1-0  0/1      Succeeded  0         29m
        myjobrun-2-0  0/1      Succeeded  0         29m
        myjobrun-3-0  0/1      Succeeded  0         29m
        myjobrun-4-0  0/1      Succeeded  0         29m
    

    Se você quiser maior detalhamento sobre a sua execução de tarefa, use a opção --o yaml com o comando jobrun get; por exemplo, ibmcloud ce jobrun get --name myjobrun --o yaml. Esta opção é útil para mostrar informações mais detalhadas na CLI para a execução de tarefa.

  3. Exiba os logs de instâncias de sua execução da tarefa.

        ibmcloud ce jobrun logs --instance  myjobrun-4-0
        ```
        Saída de exemplo
    
        ```txt {: screen}
        Getting logs for job run instance 'myjobrun-4-0'...
        OK
        myjobrun-4-0/myjobrun:
        Hi from a batch job! My index is: 4
        ```
    * Para exibir os logs de todas as instâncias de sua execução de tarefa, use o comando [**`ibmcloud ce jobrun logs --jobrun JOBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs); por exemplo,
    
    ```txt {: pre}
        ibmcloud ce jobrun logs --jobrun myjobrun
        ```
        Saída de exemplo
    
        ```txt {: screen}
        Getting logs for all instances of job run 'myjobrun'...
        Getting jobrun 'myjobrun'...
        Getting instances of jobrun 'myjobrun'...
        OK
        myjobrun-1-0/myjobrun:
        Hi from a batch job! My index is: 1
        myjobrun-2-0/myjobrun:
        Hi from a batch job! My index is: 2
        myjobrun-3-0/myjobrun:
        Hi from a batch job! My index is: 3
        myjobrun-4-0/myjobrun:
        Hi from a batch job! My index is: 4
        ```
    

Para obter mais informações, consulte Visualizando logs da tarefa com a CLI.

Obtendo informações de eventos do sistema para minhas tarefas

As informações de evento do sistema podem ser úteis para solucionar problemas quando você executa tarefas. É possível visualizar informações do evento do sistema com a CLI.

É possível exibir eventos do sistema de todas as instâncias de uma execução de tarefa ou eventos do sistema de exibição de uma instância específica de uma execução de tarefa.

  1. Use o comando ibmcloud ce jobrun list para listar todas as suas execuções de tarefas definidas; por exemplo,

    ibmcloud ce jobrun list
    
  2. Use o comando ibmcloud ce jobrun get para obter os detalhes de suas execuções da tarefa, incluindo o nome delas; por exemplo,

    ibmcloud ce jobrun get --name myjobrun
    

    Saída de exemplo

    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    Getting events of jobrun 'myjobrun'...
    OK
    Name:          myjobrun
    [...]
    Created:       2021-03-03T14:47:04-05:00
    Image:                icr.io/codeengine/firstjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1 - 4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          28m
        Instance Statuses:
        Succeeded:  4
        Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    28m         28m
        Running   True    28m         28m
        Complete  True    28m         28m
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    29m (x8 over 29m)  batch-job-controller  Updated JobRun "myjobrun"
        Normal  Completed  29m                batch-job-controller  JobRun completed successfully
    Instances:
        Name          Running  Status     Restarts  Age
        myjobrun-1-0  0/1      Succeeded  0         29m
        myjobrun-2-0  0/1      Succeeded  0         29m
        myjobrun-3-0  0/1      Succeeded  0         29m
        myjobrun-4-0  0/1      Succeeded  0         29m
    

    Se você quiser maior detalhamento sobre a sua execução de tarefa, use a opção --o yaml com o comando jobrun get; por exemplo, ibmcloud ce jobrun get --name myjobrun --o yaml. Esta opção é útil para mostrar informações mais detalhadas na CLI para a execução de tarefa.

  3. Exiba os eventos do sistema das instâncias de sua execução da tarefa.

        ibmcloud ce jobrun events --instance myjobrun-4-0
        ```
        Saída de exemplo
    
        ```txt {: screen}
        Getting events for job run instance 'myjobrun-4-0'...
        OK
        myjobrun-4-0:
        Type    Reason     Age    Source                 Messages
        Normal  Scheduled  2m14s  default-scheduler      Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10
        Normal  Pulling    2m13s  kubelet, 10.240.64.10  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     2m12s  kubelet, 10.240.64.10  Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s
        Normal  Created    2m11s  kubelet, 10.240.64.10  Created container myjobrun
        Normal  Started    2m11s  kubelet, 10.240.64.10  Started container myjobrun
        ```
    * Para exibir eventos de todas as instâncias de sua execução de tarefas, use o comando [**`ibmcloud ce jobrun events --jobrun JUBRUN_NAME`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events); por exemplo,
    
    ```txt {: pre}
        ibmcloud ce jobrun events --jobrun myjobrun
        ```
        Saída de exemplo
    
        ```txt {: screen}
        Getting jobrun 'myjobrun'...
        Getting instances of jobrun 'myjobrun'...
        Getting events for all instances of job run 'myjobrun'...
        OK
        myjobrun-1-0:
        Type    Reason     Age  Source                  Messages
        Normal  Scheduled  66s  default-scheduler       Successfully assigned 4svg40kna19/myjobrun-1-0 to 10.240.128.22
        Normal  Pulling    65s  kubelet, 10.240.128.22  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     64s  kubelet, 10.240.128.22  Successfully pulled image "icr.io/codeengine/firstjob" in 427.276949ms
        Normal  Created    64s  kubelet, 10.240.128.22  Created container myjobrun
        Normal  Started    64s  kubelet, 10.240.128.22  Started container myjobrun
        myjobrun-2-0:
        Type    Reason     Age  Source                Messages
        Normal  Scheduled  66s  default-scheduler     Successfully assigned 4svg40kna19/myjobrun-2-0 to 10.240.0.11
        Normal  Pulling    65s  kubelet, 10.240.0.11  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     63s  kubelet, 10.240.0.11  Successfully pulled image "icr.io/codeengine/firstjob" in 1.268252989s
        Normal  Created    63s  kubelet, 10.240.0.11  Created container myjobrun
        Normal  Started    63s  kubelet, 10.240.0.11  Started container myjobrun
        myjobrun-3-0:
        Type    Reason     Age  Source                Messages
        Normal  Scheduled  66s  default-scheduler     Successfully assigned 4svg40kna19/myjobrun-3-0 to 10.240.0.37
        Normal  Pulling    65s  kubelet, 10.240.0.37  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     63s  kubelet, 10.240.0.37  Successfully pulled image "icr.io/codeengine/firstjob" in 1.118647987s
        Normal  Created    63s  kubelet, 10.240.0.37  Created container myjobrun
        Normal  Started    63s  kubelet, 10.240.0.37  Started container myjobrun
        myjobrun-4-0:
        Type    Reason     Age  Source                 Messages
        Normal  Scheduled  66s  default-scheduler      Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10
        Normal  Pulling    65s  kubelet, 10.240.64.10  Pulling image "icr.io/codeengine/firstjob"
        Normal  Pulled     64s  kubelet, 10.240.64.10  Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s
        Normal  Created    63s  kubelet, 10.240.64.10  Created container myjobrun
        Normal  Started    63s  kubelet, 10.240.64.10  Started container myjobrun
        ```
    

Entender por que os índices de execução de trabalho podem falhar

Quando os índices de execução de trabalho falham no console, é possível procurar os erros e o raciocínio para ajudar a solucionar problemas, corrigir os problemas e, em seguida, executar novamente os índices de execução de trabalho.

Para trabalhar com seus trabalhos e execuções de trabalho, na página “Projetos” do Code Engine, clique no nome do seu projeto na lista de projetos e, em seguida, clique em “Trabalhos ”. Na guia “Execuções de tarefas ”, veja as instâncias de execução das tarefas. As execuções de tarefas incompletas são exibidas como “ Failed (<error>) ” na coluna “Status ”. A tabela a seguir explica os erros comuns de índice de execução de trabalho e as ações a serem tomadas:

Erro e motivos para índices de execução de trabalho com falha
Erro Explicação Ação sugerida ao usuário
ContainerExitedCode Um erro que inclui um código de saída fornecido pela carga de trabalho do usuário. Determine o motivo do código de saída em seu aplicativo e depure-o.
ExceededEphemeralStorage A instância alocou mais armazenamento efêmero em seu contêiner do que o permitido. Aumente o armazenamento efêmero do seu recurso.
ExecutableNotFound Não foi possível localizar o arquivo executável especificado no contêiner. O contêiner não pode iniciar sem ele. Verifique se o ponto de entrada especificado na imagem do contêiner está correto e se o executável existe na imagem.
MaxExecutionTimeExceeded A execução do trabalho não foi concluída dentro do tempo máximo de execução. Se várias instâncias estiverem em execução, todas as instâncias que ainda não foram concluídas mostrarão esse erro. Aumentar o valor do tempo limite de execução do trabalho.
OOMKilled Um erro de falta de memória. A instância excedeu o limite de memória alocada. Aumente a CPU e a memória de seu recurso.

Depois de solucionar os erros, clique em Rerun failed indexes (Reexecutar índices com falha ) para executar o trabalho novamente para os índices que falharam.

Verificando a referência de imagem de contêiner para minha tarefa

Ao trabalhar com tarefas Code Engine, deve-se especificar uma referência de imagem de contêiner e um segredo de registro para acessar a imagem. Para que a tarefa funcione corretamente, a referência de imagem e suas propriedades de acesso devem permanecer válidas durante a vida da tarefa..

Consulte Como verificar minha referência de imagem?