从 DC/OS CLI 调试

从命令行界面调试 DC/OS

DC/OS CLI 提供命令以调试未按照预期部署或表现的服务。要查看完整日志,请附加 --log-level=debug 到任何 DC/OS CLI 命令。例如,要排除 HDFS 软件包安装故障,请使用此命令:

  1. dcos -—log-level="debug" package install hdfs

有关日志级别的更多信息,请参阅 CLI 命令参考 或运行 dcos --help.

调试被卡住部署的子命令

DC/OS CLI 提供一组调试子命令,用于排除卡住的服务或 Pod 部署。您也可以从 [DC/OS UI]使用调试服务和 Pod。(/mesosphere/dcos/cn/2.1/monitoring/debugging/gui-debugging/).

前提条件

应用定义示例

如果您目前没有在部署时卡住的服务或 Pod,您可以使用以下两个 Marathon 应用定义 来验证本节的说明。

  • mem-app.json

    此服务通过请求多于可获得的内存来创建无限部署。

    1. {
    2. "id": "mem-app",
    3. "cmd": "sleep 1000",
    4. "cpus": 0.1,
    5. "mem": 12000,
    6. "instances": 3,
    7. "constraints": [
    8. [
    9. "hostname",
    10. "UNIQUE"
    11. ]
    12. ]
    13. }
  • stuck-sleep.json

    此服务请求过多实例。

    1. {
    2. "id": "stuck-sleep",
    3. "cmd": "sleep 1000",
    4. "cpus": 0.1,
    5. "mem": 3000,
    6. "instances": 10,
    7. "constraints": [
    8. [
    9. "hostname",
    10. "UNIQUE"
    11. ]
    12. ]
    13. }

dcos marathon debug list

dcos marathon debug list(/mesosphere/dcos/cn/2.1/cli/command-reference/dcos-marathon/dcos-marathon-debug-list/) 命令向您显示处于等待状态的所有服务。这让您能够只查看未在运行的服务。

  1. dcos marathon debug list
  2. ID SINCE INSTANCES TO LAUNCH WAITING PROCESSED OFFERS UNUSED OFFERS LAST UNUSED OFFER LAST USED OFFER
  3. /mem-app 2017-02-28T19:08:59.547Z 3 True 13 13 2017-02-28T19:09:35.607Z ---
  4. /stuck-sleep 2017-02-28T19:09:25.56Z 9 True 8 7 2017-02-28T19:09:35.608Z 2017-02-28T19:09:25.566Z

命令的输出表明:

  • 多少个服务或 Pod 的实例在等待启动。
  • 多少个 Mesos 资源邀约已处理。
  • 多少个 Mesos 资源邀约未使用
  • 用户创建或更新服务或 Pod 的时间。

此输出可以快速向您显示部署时哪些服务或 Pod 被卡住,以及它们卡住了多长时间。

dcos marathon debug summary

一旦您知道哪些服务或 pod 在部署中停滞不前,请使用 dcos marathon debug summary /<app-id>|/<pod-id>命令了解有关具体卡壳服务或 pod 的更多信息。

  1. dcos marathon debug summary /mem-app
  2. RESOURCE REQUESTED MATCHED PERCENTAGE
  3. ROLE [*] 1 / 2 50.00%
  4. CONSTRAINTS [['hostname', 'UNIQUE']] 1 / 1 100.00%
  5. CPUS 0.1 1 / 1 100.00%
  6. MEM 12000 0 / 1 0.00%
  7. DISK 0 0 / 0 ---
  8. PORTS --- 0 / 0 ---

此命令的输出显示了资源、请求的服务或 Pod、匹配的邀约数,以及匹配邀约的百分比。此命令可以快速显示哪些资源请求未被满足。

dcos marathon debug details

dcos marathon debug details /<app-id>|/<pod-id> 命令](/mesosphere/dcos/cn/2.1/cli/command-reference/dcos-marathon/dcos-marathon-debug-details/) 可以让您确切了解应当如何更改您的服务或 Pod 定义。

  1. dcos marathon debug details /mem-app
  2. HOSTNAME ROLE CONSTRAINTS CPUS MEM DISK PORTS RECEIVED
  3. 10.0.0.193 ok ok ok - ok ok 2017-02-28T23:25:11.912Z
  4. 10.0.4.126 - ok - - ok - 2017-02-28T23:25:11.913Z

命令的输出表明:

  • 哪些主机正在运行服务或 Pod
  • 服务或 Pod 请求的角色、约束、CPU、内存、磁盘和端口的状态
  • 收到最后一个资源邀约的时间

上例中,您可以看到一个 /mem-app 实例的状态在除内存以外的所有其他类别中为 ok 另一个实例的成功资源匹配比较少,角色、CPU、内存和端口均没有匹配项。

有关此命令的更多信息,请参阅 CLI 命令参考部分.