Pular para o conteúdo
Decoding Chat API

Controle de Gateway

O controle de Gateway é a visão do Admin do cluster principal do Gateway em execução. Ele lê o estado do nó ao vivo e envia solicitações de recarregamento de guilda, e não expõe sessão, presença ou payload de chamada.

Uma solicitação de Gateway não respondida retorna 504 GATEWAY_TIMEOUT. Um cluster sobrecarregado ou indisponível retorna 503 SERVICE_UNAVAILABLE. Uma resposta de Gateway inválida retorna 502 BAD_GATEWAY.

Um instantâneo do cluster do Gateway, tirado através dos nós que a solicitação pesquisou. Todo contador de nível superior, exceto uptime_seconds, node_count e status, é uma soma simples sobre esses nós, incluindo cada membro de memory. A matriz nodes relata cada nó pesquisado por conta própria.

CampoTipoDescrição
status1stringA saúde agregada do cluster
sessionsintegerAs sessões do Gateway de cliente conectadas, somadas entre os nós
guildsintegerOs processos de guilda ao vivo, somados entre os nós
presencesintegerAs presenças rastreadas, somadas entre os nós
callsintegerAs chamadas ao vivo, somadas entre os nós
memoryobjeto memória do nóA contabilização de memória, somada entre os nós
process_countintegerOs processos Erlang em uso, somados entre os nós
process_limitintegerO teto de processo Erlang, somado entre os nós
uptime_seconds2integerO menor tempo de atividade relatado por qualquer nó pesquisado, em segundos
node_count3integerO número de nós que a solicitação pesquisou
nodes4array[objeto nó de gateway]A divisão por nó (máx. 1000 entradas)

1 healthy quando todo nó pesquisado reportou healthy e degraded quando pelo menos um não o fez

2 O valor rastreia o nó iniciado mais recentemente e cai sempre que qualquer nó reinicia

3 Inclui nós que não responderam

4 As entradas são ordenadas por node_id ascendente. O nó que atendeu a solicitação é sempre pesquisado, então a matriz nunca está vazia

{
"status": "healthy",
"sessions": 4820,
"guilds": 1913,
"presences": 4611,
"calls": 12,
"memory": {"total": "3221225472", "processes": "1610612736", "system": "1610612736"},
"process_count": 92114,
"process_limit": 2097152,
"uptime_seconds": 84213,
"node_count": 2,
"nodes": []
}

Uma entrada para cada nó que a solicitação pesquisou, incluindo nós que não responderam dentro do prazo de 10 segundos por nó.

CampoTipoDescrição
node_id1stringO nome que o nó relata para si mesmo
status2stringA saúde que este nó reportou
sessionsintegerAs sessões de Gateway de cliente conectadas neste nó
guildsintegerOs processos de guilda ao vivo neste nó
presencesintegerAs presenças rastreadas neste nó
callsintegerAs chamadas ao vivo neste nó
memoryobjeto memória do nóA contabilização de memória para este nó
process_countintegerOs processos Erlang em uso neste nó
process_limitintegerO teto de processo Erlang neste nó
uptime_secondsintegerOs segundos desde que este nó começou

1 Um nó relata seu valor de ambiente HOSTNAME quando esse valor é uma string não em branco, e seu nome de nó Erlang de outra forma

2 healthy para um nó que respondeu e unavailable para um que não respondeu. Um nó que não respondeu relata nulo para cada contador aqui e contribui com zero para cada total de cluster

Uma entrada de nó pode ter membros diagnósticos adicionais. Um cliente trata um membro que não reconhece como ausente.

Contagens de bytes para um nó, ou para todos os nós pesquisados somados juntos. Cada contagem é uma string decimal porque um número JSON não pode preservar uma contagem de bytes de 64 bits.

CampoTipoDescrição
totalstringO total de bytes alocados
processesstringOs bytes alocados para processos Erlang
systemstringOs bytes alocados fora dos processos Erlang

Memória e atividade para uma guilda ao vivo.

CampoTipoDescrição
node_idstringO nó que possui o processo da guilda
guild_id?snowflakeO ID da guilda que o processo atende, ou nulo quando o estado do processo não tem ID de guilda
guild_name1stringO nome da guilda que o processo mantém na memória
guild_icon?stringO hash do ícone que o processo da guilda mantém na memória, ou nulo quando não tem nenhum
nsfw_level2?integerO Nível NSFW resolvido a partir de dados armazenados da guilda, ou nulo quando a guilda não pôde ser resolvida
memory3stringOs bytes que o processo da guilda usa, como uma string decimal
member_countintegerO número de membros que o processo da guilda contém
session_countintegerO número de sessões inscritas no processo da guilda
presence_countintegerO número de presenças que o processo da guilda rastreia

1 Um processo cujos dados armazenados em cache da guilda não têm nome relata Unknown

2 Nulo para um processo ao vivo cuja linha de guilda não pôde ser carregada e para um processo que não relata guild_id

3 A memória de processo Erlang do processo da guilda. As entradas são ordenadas de forma decrescente em todo o cluster, com empates desfeitos por guild_id ascendente

Totais de estado de voz do cluster, com um agrupamento por região de voz e um por servidor de voz.

CampoTipoDescrição
total_voice_states1integerOs estados de voz em todo o cluster
regions2array[objeto contagem de estado de voz da região]As contagens agrupadas por região de voz (máx. 1000 entradas)
servers2array[objeto contagem de estado de voz do servidor]As contagens agrupadas por servidor de voz (máx. 5000 entradas)

1 A soma dos totais que cada nó reportou, portanto, pode diferir da soma das entradas em regions ou servers

2 As entradas são ordenadas por voice_state_count decrescente, com empates desfeitos por identificador ascendente. Um identificador sem estados de voz está ausente da matriz, então cada entrada tem uma contagem de pelo menos 1

{
"total_voice_states": 318,
"regions": [{"region_id": "europe-north", "voice_state_count": 204}],
"servers": [{"server_id": "europe-north-server-1", "voice_state_count": 204}]
}

Uma entrada para cada região de voz que contém pelo menos um estado de voz.

CampoTipoDescrição
region_idstringO ID da região a qual a contagem pertence
voice_state_countintegerOs estados de voz atribuídos à região

Uma entrada para cada servidor de voz que contém pelo menos um estado de voz.

CampoTipoDescrição
server_id1stringO ID do servidor ao qual a contagem pertence
voice_state_countintegerOs estados de voz atribuídos ao servidor

1 O identificador é único apenas dentro de sua região

GET/v1/admin/gateway/statsAudit reason

Retorna o objeto de estatísticas do nó para todo o cluster do Gateway. Requer gateway:memory_stats.

StatusCorpoCondição
200objeto estatísticas do nóO estado do cluster foi retornado

A operação registra uma entrada de auditoria de Admin com ação get_gateway_stats, tipo de alvo gateway, ID de alvo 0 e chave de metadados node_count.

200 solicitações por minuto para cada usuário autenticado, no bucket admin:lookup.

GET/v1/admin/gateway/memory-statsAudit reason

Retorna os processos de guilda mais pesados ao vivo como objetos de estatísticas de memória da guilda. Requer gateway:memory_stats.

CampoTipoDescrição
limit?1integerOs processos máximos da guilda a retornar (100-1000, padrão 100)

1 O Gateway fixa o valor sobre o qual atua em 500, e cada nó contribui com no máximo 100 de seus próprios processos de guilda. Um limit de 1000 retorna no máximo 500 entradas

CampoTipoDescrição
guildsarray[objeto estatísticas de memória da guilda]Os processos de guilda nesta resposta (máx. 1000 entradas)
StatusCorpoCondição
200corpo da respostaOs processos da guilda foram retornados

Um nó que não responde dentro de 5 segundos não contribui com nenhuma entrada, e a solicitação ainda retorna 200.

A operação registra uma entrada de auditoria de Admin com ação list_guild_memory_stats, tipo de alvo guild, ID de alvo 0 e chaves de metadados limit e result_count para as entradas nesta resposta.

200 solicitações por minuto para cada usuário autenticado, no bucket admin:lookup.

GET/v1/admin/gateway/voice-state-countsAudit reason

Retorna o objeto de contagem de estado de voz. Requer gateway:memory_stats.

StatusCorpoCondição
200objeto contagem de estado de vozContagens foram retornadas

As contagens abrangem estados de voz em canais de guilda e em chamadas. Um nó que não responde dentro de 10 segundos contribui com zero, e a solicitação ainda retorna 200.

A operação registra uma entrada de auditoria de Admin com ação get_voice_state_counts, tipo de alvo gateway, ID de alvo 0 e chaves de metadados total_voice_states, region_count e server_count.

200 solicitações por minuto para cada usuário autenticado, no bucket admin:lookup.

POST/v1/admin/gateway/reloadsAudit reason

Busca os dados da guilda para as guildas fornecidas do banco de dados novamente e os envia para cada processo de guilda ativo e retorna quantos processos de guilda ativos foram selecionados. Requer gateway:reload_all.

CampoTipoDescrição
guild_ids1array[snowflake]As guildas a recarregar (máx. 1000 entradas)

1 O campo é obrigatório. Uma matriz vazia seleciona todos os processos de guilda ativos em todos os nós ativos

CampoTipoDescrição
count1 2integerO número de processos de guilda ativos selecionados para recarregamento

1 Uma guilda fornecida sem processo ativo é ignorada, então o valor pode ser menor que o número de IDs enviados. Um nó proprietário que falha ou não responde dentro de 15 segundos contribui com zero

2 Tirado quando os processos são selecionados. Um processo selecionado cujos dados de guilda não podem ser buscados ainda é contado, então o valor é um limite superior sobre os recarregamentos que tiveram sucesso

StatusCorpoCondição
200corpo da respostaO Decoding Chat iniciou um recarregamento para cada processo de guilda selecionado

Uma guilda cujo nó proprietário não pode ser resolvido não é contada. Os recarregamentos ainda podem estar em andamento quando a resposta chega. Nenhum dado de guilda é alterado.

A operação registra uma entrada de auditoria de Admin com ação reload_guilds, tipo de alvo guild, ID de alvo 0 e chaves de metadados guild_count para as guildas solicitadas e reloaded para a count retornada.

5 solicitações por minuto para cada usuário autenticado, no bucket admin:gateway:reload.