O que significa us= numa linha de log do OpenVPN e como convertê-lo
O campo us= é a parte de microssegundos da marca temporal do log, não um identificador de sessão. Preencha-o até seis dígitos e leia a linha inteira antes de comparar relógios.
O log de texto do OpenVPN coloca uma data, uma hora e um us= valor na mesma linha, e o último dos três é a parte que os leitores interpretam mal. É o componente de microssegundos dessa marca temporal, impresso sem preenchimento com zeros. Não é um identificador de sessão, um nome de utilizador ou um contador, e tratá-lo como tal transforma uma fração de segundo numa conclusão errada e confiante. Converta-o como uma fração do segundo apresentado e o resto da linha continua legível.
O que significam as três partes da linha
A data e o segundo inteiro vêm primeiro, e us= carrega o resto abaixo de um segundo. Um valor de 12345 são doze mil trezentos e quarenta e cinco microssegundos, ou seja, 0.012345 segundos, por isso a linha descreve 09:15:30.012345 quando a hora impressa é 09:15:30. O contador recomeça a cada novo segundo, por isso uma linha posterior pode imprimir uma fração menor sem que nenhum relógio ande para trás. Apenas a marca temporal completa ordena os eventos.
2026-11-02 08:41:07 us=4820
A unidade é um milionésimo de segundo, e seis dígitos de us= cobrem todo o intervalo de 0.000000 a 0.999999. Cinco dígitos descrevem dezenas de milissegundos, enquanto seis descrevem centenas de milissegundos até quase um segundo inteiro. Se uma conversão produzir uma fração maior do que um, o ponto decimal mudou de lugar e a aritmética está errada. Fazê-lo à mão significa dividir o inteiro impresso por um milhão e somá-lo ao segundo inteiro.
O preenchimento é a armadilha. us=42 são quarenta e dois microssegundos, escritos como .000042, não .42. Preencha o inteiro até seis posições à esquerda antes de converter, e o valor deixa de parecer uma fração decimal dos dígitos que vê.
Converter uma linha sem calculadora
Tome o segundo impresso como base e trate us= como a fração. Para 09:15:30 com us=12345 a forma decimal é 09:15:30.012345; para us=900000 é 09:15:30.900000. Os dígitos depois do ponto decimal são o inteiro preenchido, nunca o inteiro dividido por mil. Escrever primeiro a forma de seis dígitos evita a maioria dos erros.
Se analisa logs em marcas temporais, analise a data, o segundo inteiro e a fração em conjunto. Um analisador que assume milissegundos vai ordenar eventos erradamente por um fator de mil, e a saída ainda parece plausível.
Quando o campo falta no log
A parte de microssegundos pertence ao formato de log de texto e só aparece quando as marcas temporais detalhadas estão ativadas. No formatador de marcas temporais do OpenVPN 2.6 é acrescentada quando essa saída está ligada e o valor armazenado não é zero. Um log sem us= portanto não diz nada sobre o relógio nem sobre a compilação; normalmente significa que a verbosidade configurada é demasiado baixa. Verifique a configuração antes de culpar a sincronização horária.
A definição confirma-se facilmente a partir da configuração do servidor. Execute o comando abaixo e leia o número que ele devolve. A saída detalhada de marcas temporais aparece com verbosidade 4, por isso um valor mais baixo explica o campo ausente sem qualquer outra falha. Executar a mesma configuração com --verb 4 mostra o campo assim que o daemon reinicia com esse nível.
grep -nE '^[[:space:]]*verb[[:space:]]+[0-9]' /etc/openvpn/server.conf
Aumentar a verbosidade acrescenta detalhe ao log; não melhora o relógio. Após o reinício, compare uma linha nova com uma antiga para confirmar que o formato mudou, e baixe o nível outra vez quando a pergunta estiver respondida.
O que seis dígitos não provam
Seis dígitos descrevem a resolução, e a resolução não diz nada sobre se dois anfitriões concordam quanto à hora. Um cliente e um servidor podem ambos imprimir microssegundos enquanto os respetivos relógios diferem em segundos. Quando correlaciona eventos entre máquinas, registe o fuso horário e qualquer desvio conhecido, e prefira um campo que nomeie o par ou a sessão a qualquer marca temporal. Duas linhas que partilham uma fração não são necessariamente a mesma ligação.
Um coletor pode carimbar cada linha à chegada, o que acrescenta uma segunda marca temporal que pertence ao coletor e não ao OpenVPN. Identifique qual está a ler antes de as comparar, e conserve a linha em bruto para que a comparação possa ser refeita.
Um valor novo de us= não prova que um novo cliente iniciou sessão, e um repetido não prova um evento duplicado. Os campos de par e de ligação respondem a essas perguntas.