Skip to content

Healthcheck logging seems to not work sometimes #4377

Closed
@apostasie

Description

@apostasie

Description

Healthcheck seemingly fails to capture the output of commands it runs (one time out of two or three on slow environments - one time in 30 or 40 on my local lima).

Since this is a new feature, suggesting we hold on v2.1.3 a little bit until we fix this. (<- tag @AkihiroSuda)

Steps to reproduce the issue

Here is an example of a log entry with nothing in it (while there should be).


        +============================================================================================================+
        | 🏗       | "TestContainerHealthCheckAdvance/Health_check_uses_container_environment_variables": setup       |
        +============================================================================================================+
        
    container_health_check_test.go:331: 
        
        +------------------------------------------------------------------------------------------------------------+
        | ➡️      | ⚙️ /usr/local/bin/nerdctl run -d --name testcontainerhealthcheckadvance-health-check-uses-contai |
        |         | ner-environ-285e8021 --env MYVAR=test-value --health-cmd echo $MYVAR --health-interval 1s --heal |
        |         | th-timeout 1s ghcr.io/stargz-containers/alpine:3.13-org sleep 3600                               |
        +------------------------------------------------------------------------------------------------------------+
        |         | 🟢 f6c5e3bbcb7a9b31abffed58dcc67366b58865cefe2b1b546f44b012572fc2e7                              |
        +------------------------------------------------------------------------------------------------------------+
        | 🌱      | HOME=/root                                                                                       |
        |         | PATH=/usr/local/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin |
        |         | :/bin                                                                                            |
        |         | DOCKER_CONFIG=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variab |
        |         | les1890087731/003                                                                                |
        |         | NERDCTL_TOML=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variabl |
        |         | es1890087731/003/nerdctl.toml                                                                    |
        +------------------------------------------------------------------------------------------------------------+
        | ⏰      | <1s (limit: 3m0s)                                                                                |
        +------------------------------------------------------------------------------------------------------------+
        | 📁      | /tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variables1890087731/ |
        |         | 002                                                                                              |
        +------------------------------------------------------------------------------------------------------------+
        
    container_health_check_test.go:337: 
        
        +------------------------------------------------------------------------------------------------------------+
        | ➡️      | ⚙️ /usr/local/bin/nerdctl container inspect testcontainerhealthcheckadvance-health-check-uses-co |
        |         | ntainer-environ-285e8021                                                                         |
        +------------------------------------------------------------------------------------------------------------+
        |         | Actual content is 173 lines long and has been abbreviated to 50
         |
        |         |                                                                                                  |
        |         | 🟢 [                                                                                             |
        |         |     {                                                                                            |
        |         |         "Id": "f6c5e3bbcb7a9b31abffed58dcc67366b58865cefe2b1b546f44b012572fc2e7",                |
        |         |         "Created": "2025-06-26T03:43:36.566037659Z",                                             |
        |         |         "Path": "sleep",                                                                         |
        |         |         "Args": [                                                                                |
        |         |             "3600"                                                                               |
        |         |         ],                                                                                       |
        |         |         "State": {                                                                               |
        |         |             "Status": "running",                                                                 |
        |         |             "Running": true,                                                                     |
        |         |             "Paused": false,                                                                     |
        |         | ... 123 lines are being ignored...                                                               |
        |         | 000000000,\"Timeout\":1000000000}",                                                              |
        |         |                 "nerdctl/host-config": "{\"BlkioWeight\":0,\"CidFile\":\"\",\"Devices\":null}",  |
        |         |                 "nerdctl/hostname": "f6c5e3bbcb7a",                                              |
        |         |                 "nerdctl/ipc": "{\"mode\":\"private\"}",                                         |
        |         |                 "nerdctl/log-config": "{\"driver\":\"json-file\",\"address\":\"/run/containerd/c |
        |         | ontainerd.sock\"}",                                                                              |
        |         |                 "nerdctl/log-uri": "binary:///usr/local/bin/nerdctl?_NERDCTL_INTERNAL_LOGGING=%2 |
        |         | Fvar%2Flib%2Fnerdctl%2F1935db59",                                                                |
        |         |                 "nerdctl/name": "testcontainerhealthcheckadvance-health-check-uses-container-env |
        |         | iron-285e8021",                                                                                  |
        |         |                 "nerdctl/namespace": "nerdctl-test",                                             |
        |         |                 "nerdctl/networks": "[\"bridge\"]",                                              |
        |         |                 "nerdctl/platform": "linux/amd64",                                               |
        |         |                 "nerdctl/state-dir": "/var/lib/nerdctl/1935db59/containers/nerdctl-test/f6c5e3bb |
        |         | cb7a9b31abffed58dcc67366b58865cefe2b1b546f44b012572fc2e7"                                        |
        |         |             }                                                                                    |
        |         |         },                                                                                       |
        |         |         "NetworkSettings": {                                                                     |
        |         |             "Ports": {},                                                                         |
        |         |             "GlobalIPv6Address": "",                                                             |
        |         |             "GlobalIPv6PrefixLen": 0,                                                            |
        |         |             "IPAddress": "10.4.0.92",                                                            |
        |         |             "IPPrefixLen": 24,                                                                   |
        |         |             "MacAddress": "d2:27:31:7b:40:73",                                                   |
        |         |             "Networks": {                                                                        |
        |         |                 "unknown-eth0": {                                                                |
        |         |                     "IPAddress": "10.4.0.92",                                                    |
        |         |                     "IPPrefixLen": 24,                                                           |
        |         |                     "GlobalIPv6Address": "",                                                     |
        |         |                     "GlobalIPv6PrefixLen": 0,                                                    |
        |         |                     "MacAddress": "d2:27:31:7b:40:73"                                            |
        |         |                 }                                                                                |
        |         |             }                                                                                    |
        |         |         }                                                                                        |
        |         |     }                                                                                            |
        |         | ]                                                                                                |
        |         |                                                                                                  |
        +------------------------------------------------------------------------------------------------------------+
        | 🌱      | HOME=/root                                                                                       |
        |         | PATH=/usr/local/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin |
        |         | :/bin                                                                                            |
        |         | DOCKER_CONFIG=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variab |
        |         | les1890087731/003                                                                                |
        |         | NERDCTL_TOML=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variabl |
        |         | es1890087731/003/nerdctl.toml                                                                    |
        +------------------------------------------------------------------------------------------------------------+
        | ⏰      | <1s (limit: 3m0s)                                                                                |
        +------------------------------------------------------------------------------------------------------------+
        | 📁      | /tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variables1890087731/ |
        |         | 002                                                                                              |
        +------------------------------------------------------------------------------------------------------------+

        
    container_health_check_test.go:603: 
        
        +============================================================================================================+
        | 🚀      | "TestContainerHealthCheckAdvance/Health_check_uses_container_environment_variables": starting te |
        |         | st!                                                                                              |
        +============================================================================================================+
        | ⏳      | /tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variables1890087731/ |
        |         | 001/c59fef3d                                                                                     |
        +============================================================================================================+
        |         |                                                                                                  |
        +============================================================================================================+
        | config  | {                                                                                                |
        |         |   "Namespace": "nerdctl-test",                                                                   |
        |         |   "PrivateMode": ""                                                                              |
        |         | }                                                                                                |
        +============================================================================================================+
        | labels  | {}                                                                                               |
        +============================================================================================================+
        
    container_health_check_test.go:603: 
        
        +------------------------------------------------------------------------------------------------------------+
        | ➡️      | ⚙️ /usr/local/bin/nerdctl container healthcheck testcontainerhealthcheckadvance-health-check-use |
        |         | s-container-environ-285e8021                                                                     |
        +------------------------------------------------------------------------------------------------------------+
        | 🌱      | HOME=/root                                                                                       |
        |         | PATH=/usr/local/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin |
        |         | :/bin                                                                                            |
        |         | NERDCTL_TOML=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variabl |
        |         | es1890087731/003/nerdctl.toml                                                                    |
        |         | DOCKER_CONFIG=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variab |
        |         | les1890087731/003                                                                                |
        +------------------------------------------------------------------------------------------------------------+
        | ⏰      | <1s (limit: 3m0s)                                                                                |
        +------------------------------------------------------------------------------------------------------------+
        | 📁      | /tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variables1890087731/ |
        |         | 002                                                                                              |
        +------------------------------------------------------------------------------------------------------------+
        
    container_health_check_test.go:349: 
        
        +------------------------------------------------------------------------------------------------------------+
        | ➡️      | ⚙️ /usr/local/bin/nerdctl container inspect testcontainerhealthcheckadvance-health-check-uses-co |
        |         | ntainer-environ-285e8021                                                                         |
        +------------------------------------------------------------------------------------------------------------+
        |         | Actual content is 186 lines long and has been abbreviated to 50
         |
        |         |                                                                                                  |
        |         | 🟢 [                                                                                             |
        |         |     {                                                                                            |
        |         |         "Id": "f6c5e3bbcb7a9b31abffed58dcc67366b58865cefe2b1b546f44b012572fc2e7",                |
        |         |         "Created": "2025-06-26T03:43:36.566037659Z",                                             |
        |         |         "Path": "sleep",                                                                         |
        |         |         "Args": [                                                                                |
        |         |             "3600"                                                                               |
        |         |         ],                                                                                       |
        |         |         "State": {                                                                               |
        |         |             "Status": "running",                                                                 |
        |         |             "Running": true,                                                                     |
        |         |             "Paused": false,                                                                     |
        |         | ... 136 lines are being ignored...                                                               |
        |         |                 "nerdctl/healthstate": "{\"Status\":\"healthy\",\"FailingStreak\":0}",           |
        |         |                 "nerdctl/host-config": "{\"BlkioWeight\":0,\"CidFile\":\"\",\"Devices\":null}",  |
        |         |                 "nerdctl/hostname": "f6c5e3bbcb7a",                                              |
        |         |                 "nerdctl/ipc": "{\"mode\":\"private\"}",                                         |
        |         |                 "nerdctl/log-config": "{\"driver\":\"json-file\",\"address\":\"/run/containerd/c |
        |         | ontainerd.sock\"}",                                                                              |
        |         |                 "nerdctl/log-uri": "binary:///usr/local/bin/nerdctl?_NERDCTL_INTERNAL_LOGGING=%2 |
        |         | Fvar%2Flib%2Fnerdctl%2F1935db59",                                                                |
        |         |                 "nerdctl/name": "testcontainerhealthcheckadvance-health-check-uses-container-env |
        |         | iron-285e8021",                                                                                  |
        |         |                 "nerdctl/namespace": "nerdctl-test",                                             |
        |         |                 "nerdctl/networks": "[\"bridge\"]",                                              |
        |         |                 "nerdctl/platform": "linux/amd64",                                               |
        |         |                 "nerdctl/state-dir": "/var/lib/nerdctl/1935db59/containers/nerdctl-test/f6c5e3bb |
        |         | cb7a9b31abffed58dcc67366b58865cefe2b1b546f44b012572fc2e7"                                        |
        |         |             }                                                                                    |
        |         |         },                                                                                       |
        |         |         "NetworkSettings": {                                                                     |
        |         |             "Ports": {},                                                                         |
        |         |             "GlobalIPv6Address": "",                                                             |
        |         |             "GlobalIPv6PrefixLen": 0,                                                            |
        |         |             "IPAddress": "10.4.0.92",                                                            |
        |         |             "IPPrefixLen": 24,                                                                   |
        |         |             "MacAddress": "d2:27:31:7b:40:73",                                                   |
        |         |             "Networks": {                                                                        |
        |         |                 "unknown-eth0": {                                                                |
        |         |                     "IPAddress": "10.4.0.92",                                                    |
        |         |                     "IPPrefixLen": 24,                                                           |
        |         |                     "GlobalIPv6Address": "",                                                     |
        |         |                     "GlobalIPv6PrefixLen": 0,                                                    |
        |         |                     "MacAddress": "d2:27:31:7b:40:73"                                            |
        |         |                 }                                                                                |
        |         |             }                                                                                    |
        |         |         }                                                                                        |
        |         |     }                                                                                            |
        |         | ]                                                                                                |
        |         |                                                                                                  |
        +------------------------------------------------------------------------------------------------------------+
        | 🌱      | HOME=/root                                                                                       |
        |         | PATH=/usr/local/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin |
        |         | :/bin                                                                                            |
        |         | DOCKER_CONFIG=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variab |
        |         | les1890087731/003                                                                                |
        |         | NERDCTL_TOML=/tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variabl |
        |         | es1890087731/003/nerdctl.toml                                                                    |
        +------------------------------------------------------------------------------------------------------------+
        | ⏰      | <1s (limit: 3m0s)                                                                                |
        +------------------------------------------------------------------------------------------------------------+
        | 📁      | /tmp/TestContainerHealthCheckAdvanceHealth_check_uses_container_environment_variables1890087731/ |
        |         | 002                                                                                              |
        +------------------------------------------------------------------------------------------------------------+
        
    container_health_check_test.go:352: {
          "Status": "healthy",
          "FailingStreak": 0,
          "Log": [
            {
              "Start": "2025-06-26T03:43:38.039774087Z",
              "End": "2025-06-26T03:43:38.117066808Z",
              "ExitCode": 0,
              "Output": ""
            }
          ]
        }
    container_health_check_test.go:356: assertion failed: expression is false: strings.Contains(h.Log[0].Output, "test"): expected health log output to contain 'test'
    container_health_check_test.go:603:        

Describe the results you received and expected

Work

What version of nerdctl are you using?

main

Are you using a variant of nerdctl? (e.g., Rancher Desktop)

None

Host information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions