- Início
- Rede multi-cloud
- Customer Edge diagnostics
- Reaching a Customer Edge
- API de Depuração
API de Depuração
Capturado em 2026-07-28 de um CE deste deployment. sitecli/capture-manifest.json
registra qual nó, e scripts/capture-sitecli.sh --check reverifica a superfície de
comandos contra um CE ativo.
A API vpm/debug executa comandos do Site CLI em um nó registrado e retorna sua
saída. Tudo abaixo foi estabelecido contra um nó ativo; nada disso está
publicado upstream.
O catálogo de comandos é autodescritivo
Seção intitulada “O catálogo de comandos é autodescritivo”Pergunte ao nó o que ele suporta enviando um POST para exec-user com a chave command
omitida:
curl -sS -X POST \ -H "Authorization: APIToken $XCSH_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"namespace":"system","site":"<site>","node":"<node>"}' \ "$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/<node>/exec-user" \ | jq -r .output | jq .A resposta é um objeto JSON indexado pelo nome do comando:
{ "crictl-inspect": ["System Troubleshooting", "ExecUser", " container-id"], "diagnosis": ["System Troubleshooting", "ExecUser", "no argument needed", "GLOBAL"], "ip-link-set": ["Network Troubleshooting", "Exec", " (<device>||<group>) (up||down)"]}Cada entrada é [categoria, tier, argumentoDeExemplo?, escopo?], e esses campos não
são documentação — eles determinam como o comando deve ser chamado.
Três transportes, escolhidos pela entrada do catálogo
Seção intitulada “Três transportes, escolhidos pela entrada do catálogo”| Condição | Método e caminho | Corpo | Retorna |
|---|---|---|---|
scope é GLOBAL | GET .../vpm/debug/global/<cmd> | nenhum | JSON |
tier é ExecUser | POST .../vpm/debug/<node>/exec-user | array command | texto |
tier é Exec | POST .../vpm/debug/<node>/exec | array command | texto |
ExecUser — o tier somente leitura 31 comandos
Seção intitulada “ExecUser — o tier somente leitura ”O caso comum. Passe o comando e seus argumentos como um array, com o nome do comando primeiro:
curl -sS -X POST \ -H "Authorization: APIToken $XCSH_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"namespace":"system","site":"<site>","node":"<node>","command":["crictl-ps"]}' \ "$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/<node>/exec-user"{ "return_code": 0, "output": "CONTAINER IMAGE CREATED STATE ..." }Argumentos são elementos separados do array, não uma única string:
{ "command": ["journalctl", "-u", "vpm", "-n", "200"] }GLOBAL — abrangente ao site, e um transporte totalmente diferente 2 comandos
Seção intitulada “GLOBAL — abrangente ao site, e um transporte totalmente diferente ”health e diagnosis são os únicos dois. São requisições GET para um caminho
global, não recebem argumentos e retornam JSON estruturado em vez de texto de terminal.
curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \ "$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/global/health" | jq .Exec — o tier privilegiado 1 comando neste build
Seção intitulada “Exec — o tier privilegiado ”Um endpoint separado, e o tier é imposto em vez de meramente indicativo: exec rejeita
um comando ExecUser com a mesma mensagem command not supported. Todo membro
ou altera o nó ou lê um marcador de estado.
No build que este tenant executa, o tier contém apenas ip-link-set. Builds mais recentes
adicionam systemctl-restart-NetworkManager, systemctl-restart-crio,
systemctl-restart-kubelet, systemctl-start-crio-prune e três
comandos marker-exists-*.
Encontrando os nomes do site e do nó
Seção intitulada “Encontrando os nomes do site e do nó”O nome do nó é o nome da VM do Azure, e list-service é uma maneira econômica de confirmá-lo
juntamente com os serviços em execução nele:
curl -sS -H "Authorization: APIToken $XCSH_API_TOKEN" \ "$XCSH_API_URL/api/operate/namespaces/system/sites/<site>/vpm/debug/global/list-service" \ | jq -r '[.service[].node] | unique'["", "f5-xc-ce-vm-01"]Alguns serviços reportam um nome de nó vazio, então uma string vazia nessa lista é um artefato da
resposta, e não um segundo nó. list-service também não está no catálogo de 34 comandos:
é um endpoint global que o catálogo não anuncia, e é por isso que está documentado aqui
e não na referência de comandos.
Reproduzindo as capturas deste repositório
Seção intitulada “Reproduzindo as capturas deste repositório”Cada página de comando incorpora a saída capturada por scripts/capture-sitecli.sh, que
implementa todas as três regras acima.
-
Aponte-o para um tenant. Ele lê
XCSH_API_URLeXCSH_API_TOKEN, ou recorre ao contextoxcshativo. -
Atualize o catálogo e confirme que o nó não mudou por baixo da documentação:
Terminal window bash scripts/capture-sitecli.sh --checkIsso compara apenas o catálogo comitado e o build de software. Ele reporta uma mudança de build separadamente de comandos adicionados ou removidos.
-
Recapture quando quiser evidências novas:
Terminal window bash scripts/capture-sitecli.sh