01O que é monitorado
| Sensor | Valor | Limiar de partida |
|---|---|---|
| Resposta do Asterisk | tempo de resposta do núcleo, em ms | |
| Troncos registrados | troncos PJSIP com registro de saída ativo; cada tronco com estado, canais, há quanto tempo está sem registro | |
| Ramais online | ramais PJSIP disponíveis, em uso e indisponíveis | |
| Canais ativos | canais e chamadas em curso | |
| Chamadas esperando em fila | soma de todas as filas | atenção 5, fora 15 |
| Maior espera em fila | em segundos | atenção 120, fora 300 |
| Maior abandono em fila | em % | atenção 10, fora 25 |
| Jitter máximo | por tronco, p95 na última hora, em ms | atenção 30, fora 60 |
| Perda máxima | por tronco, na última hora, em % | atenção 1, fora 3 |
Jitter e perda vêm dos eventos RTCP que o Asterisk publica durante as chamadas; sem chamada na última hora, o sensor fica "sem chamada" e não alerta. Troncos e ramais são os do PJSIP (o antigo chan_sip não é lido).
02Como funciona
- O evobits pede:
CoreStatus,CoreSettings,CoreShowChannels,PJSIPShowRegistrationsOutbound,DeviceStateList,QueueSummary,QueueStatus, e escuta o eventoRTCPReceived. Para entrar:Challenge,Login,Logoff,PingeListCommands. - Nunca:
Originate,Hangup,Redirect,Command,Reload,Setvar,QueueAdd,QueueRemovenem qualquer ação fora da lista. A sonda confere a lista antes de escrever no socket. - Login sempre por desafio MD5: a senha nunca trafega em texto, nem na porta comum nem na TLS. Se o Asterisk não oferecer o desafio, a sonda não envia a senha.
- **Por que
write = reporting:** no Asterisk, as ações que leem troncos, canais e o núcleo (CoreStatus,CoreSettings,CoreShowChannels,PJSIPShowRegistrationsOutbound) exigem a classereportingemwrite. Um usuário comwritevazio não lê troncos nem canais. A classereportinglibera tambémPJSIPRegister,PJSIPUnregister,PJSIPQualifyeLoggerRotate, que o evobits não chama. - Usuário com escrita perigosa é recusado: depois do login, a sonda pede
ListCommands(a lista do que o usuário pode fazer). Se aparecerOriginate,Hangup,Command,Redirect,Setvar,Reload,QueueAdd,Atxfer,DBPut,ModuleLoadou outra ação de escrita perigosa, o teste falha com "O usuário pode escrever no Asterisk" e nada mais é lido. - Uma sessão AMI fica aberta entre as leituras (para juntar os eventos RTCP) e fecha depois de 10 minutos sem uso.
- Privacidade: do AMI só saem nomes de ramal e de tronco, estados e números. Número de quem ligou, nome de pessoa, nome de agente e o canal nunca entram na amostra.
- A senha fica cifrada no evobits e nunca volta para a tela.
03Onde aparece
Na página do dispositivo do Asterisk: o cabeçalho ("No ar há 12 d · Asterisk 22.1.0 · 1 tronco sem registro"), o painel de troncos e ramais (no desenho do painel frontal) e as abas Troncos (estado, canais, jitter p95 e perda por tronco), Ramais e Filas (esperando, maior espera, abandono e nível de serviço). Os sensores entram nos dashboards e nos alertas como qualquer outro.
04Alertas
Os limiares da tabela acima já vêm prontos e podem ser mudados em cada sensor. Regras de alerta de dispositivo e de sensor valem como sempre (por exemplo, "tronco sem registro" ou "fila com mais de 5 esperando por 3 minutos").
05Limites e privacidade
- Precisa de sonda 1.0.9 ou mais nova, que alcance o Asterisk na porta do AMI (5038, ou 5039 com TLS).
- A leitura é a cada 30 s; o painel mostra até 800 ramais.
- Nunca deixe a porta do AMI aberta para a internet: o
permitdo guia deixa só a sonda entrar.
06Como conectar
Na página do dispositivo do Asterisk: Adicionar sensor > Asterisk (AMI), tela "Conectar Asterisk". No servidor do Asterisk, como root:
**1. Acrescente no /etc/asterisk/manager.conf** (o [general] com enabled = yes já precisa existir):
[evobits]
secret = troque-por-uma-senha-longa
deny = 0.0.0.0/0.0.0.0
permit = <ip-da-sonda>/255.255.255.255
read = system,call,agent,reporting
write = reporting
O permit é o IP com que a sonda chega ao Asterisk (atrás de NAT, o IP depois do NAT). Troque <ip-da-sonda> pelo IP da sonda do dispositivo; a tela de conexão mostra o valor certo.
2. Recarregue o AMI, no console do Asterisk:
asterisk -rx "manager reload"
**3. Cole o usuário (evobits) e o segredo na tela, rode o Teste** e escolha o que ler: Troncos, Ramais e canais, Filas, Qualidade (RTCP).
AMI com TLS (porta 5039)
No [general] do manager.conf:
tlsenable = yes
tlsbindaddr = 0.0.0.0:5039
tlscertfile = /etc/asterisk/keys/asterisk.crt
tlsprivatekey = /etc/asterisk/keys/asterisk.key
Recarregue e ligue "AMI com TLS (porta 5039)" na tela. A sonda confere o certificado: ele precisa ser de uma autoridade reconhecida e do nome do dispositivo (se o endereço do dispositivo é um IP, o certificado precisa ter esse IP). Certificado autoassinado só passa com a opção explícita de aceitar sem verificar (desligada por padrão).
07Como conferir
O Teste da tela mostra os degraus:
- 1Conexão: a versão do Asterisk e do AMI (por exemplo "Asterisk 20.11.1, AMI 9.0").
- 2Leitura: "leitura da lista fechada".
- 3Escrita: nenhuma ação perigosa.
- 4Itens: quantos troncos, ramais e filas foram achados.
Depois de criados, os sensores aparecem na página do dispositivo em menos de 1 minuto.
08Problemas comuns
| Mensagem | O que fazer |
|---|---|
| Usuário ou segredo recusado, ou o permit do manager.conf não inclui a sonda | confira o segredo e o IP do permit; depois manager reload |
| A porta recusou a conexão | enabled = yes e port = 5038 no [general], bindaddr que a sonda alcance, firewall |
| A porta não responde como AMI do Asterisk | a porta é de outro serviço |
| O usuário pode escrever no Asterisk | tire system, call, originate, command, config, agent e all do write; deixe só reporting |
| O usuário não tem permissão de leitura | falta reporting no write ou alguma classe no read (system,call,agent,reporting) |
| O certificado TLS do Asterisk não confere | certificado autoassinado, vencido ou de outro nome |
| O Asterisk não ofereceu o login por desafio MD5 | versão ou configuração do AMI sem Challenge; o evobits não manda a senha em texto |
| Jitter e perda "sem chamada" | nenhuma chamada no tronco na última hora, ou o Asterisk não publica RTCP |
09Texto para IA
Para pedir a um assistente de código (Claude Code ou afins) que escreva a mudança no seu Asterisk. Ele só entrega os comandos; você decide quando rodar. Troque os marcadores entre < >; o token fica só na variável EVOBITS_TOKEN.
# Tarefa: criar no Asterisk o usuário AMI só de leitura do evobits
## Objetivo
Acrescentar ao Asterisk um usuário AMI chamado `evobits`, que o evobits usa para ler troncos, ramais, canais, filas e
RTCP, sem poder originar, derrubar ou transferir chamadas, rodar comandos ou recarregar o Asterisk, e que só aceite a
conexão da sonda do evobits (<ip-da-sonda>).
## Contexto
- Bloco a acrescentar em /etc/asterisk/manager.conf:
[evobits]
secret = <senha longa, vinda de um segredo>
deny = 0.0.0.0/0.0.0.0
permit = <ip-da-sonda>/255.255.255.255
read = system,call,agent,reporting
write = reporting
- `write = reporting` é necessário: sem ele o Asterisk não deixa ler troncos e canais. Qualquer outra classe em
`write` (system, call, originate, command, config, agent, all) faz o evobits recusar o usuário.
- O `[general]` do manager.conf precisa de `enabled = yes` e `port = 5038` (ou TLS na 5039 com `tlsenable = yes`,
`tlsbindaddr`, `tlscertfile`, `tlsprivatekey` e certificado válido para o nome ou IP do servidor).
- Depois: `asterisk -rx "manager reload"` (não reinicia o Asterisk nem derruba chamadas).
- O evobits só lê: CoreStatus, CoreSettings, CoreShowChannels, PJSIPShowRegistrationsOutbound, DeviceStateList,
QueueSummary, QueueStatus e o evento RTCPReceived. Login por desafio MD5.
## Passos
1. Descubra como o Asterisk é gerenciado (arquivos à mão, FreePBX, Issabel, Ansible, contêiner). Em FreePBX e
parecidos, use o arquivo de inclusão próprio (por exemplo manager_custom.conf), não o arquivo gerado.
2. Confira se já existe um usuário `[evobits]`; se existir, mostre a diferença em vez de sobrescrever.
3. Acrescente o bloco do contexto, com a senha lida de um segredo ou variável (EVOBITS_AMI_SENHA), nunca escrita.
4. Confirme que o `[general]` tem `enabled = yes` e a porta que a sonda alcança.
5. Entregue os comandos e só rode `manager reload` depois do meu OK. Não reinicie o Asterisk.
## Regras
- Não mude nada além do bloco `[evobits]` (nem dialplan, nem PJSIP, nem outros usuários AMI).
- Não grave a senha em arquivo versionado nem na resposta.
- Não abra a porta do AMI para a internet.
## Como saber que deu certo
1. `asterisk -rx "manager show user evobits"` mostra o usuário com write = reporting.
2. No painel do evobits, "Conectar Asterisk", o Teste mostra Conexão com a versão, Leitura ok, Escrita sem ações
perigosas e os troncos, ramais e filas achados.