Configurar Amostragem do APM
O APM Sampling é uma configuração opcional para o APM Java Agent e o APM Tracer para monitorar uma fração dos intervalos com base na regra de amostragem.
A Amostragem de APM é uma implementação de amostragem baseada em intervalo raiz, permitindo que rastreamentos submetidos a amostragem gerem representação de todos os rastreamentos. A decisão de amostragem é tomada com base em regras de amostragem. Quando um intervalo raiz (mesmo que rastreamento) é amostrado, o intervalo raiz e todos os intervalos filhos também são amostrados. Quando um intervalo raiz não é amostrado, todos os intervalos filhos não são amostrados.
Regras Disponíveis
As regras a seguir estão disponíveis para amostragem de APM:
Regra | Nome da Regra | Parâmetro da Regra | Parâmetro de Amostra | Descrição |
---|---|---|---|---|
Constante | constant | número inteiro
(0 ou acima) |
50 | Amostra constantemente uma vez de acordo com o valor do parâmetro especificado.
Por exemplo, se o parâmetro for definido como 50, o primeiro de cada 50 rastreamentos será amostrado. Se o parâmetro for definido como 0, nenhum rastreamento será amostrado. Se o parâmetro for definido como 1, cada rastreamento será amostrado. |
Probabilística | probabilistic | número decimal entre 0 e 1 | 0.2 | Amostra decidida sobre a probabilidade especificada.
Por exemplo, se o parâmetro for definido como 0.2, haverá uma chance de 20% de um rastreamento ser amostrado. |
Taxa limitada | limited-rate | <limit>/<seconds> | 500/60 | Amostra até o limite especificado para cada janela de segundos especificada.
Por exemplo, se o parâmetro for definido como 500/60, os primeiros 500 rastreamentos serão amostrados a cada 60 segundos. |
Taxa Limitada por Operação | per-operation-rate | <limit>/<seconds> | 10/60 | Amostra até o limite especificado para cada janela de segundos especificada por nome da operação.
Por exemplo, se o parâmetro for definido como 10/60, os primeiros 10 rastreamentos de cada nome de operação serão amostrados a cada 60 segundos. |
Nome da Operação | operation | <op1>,<op2>, ...<opN> | /status_order,/status_ship | Amostra apenas o nome da operação especificada. Várias operações podem ser especificadas delimitadas por vírgula. |
Nome da Operação em Regex | operation-regex | <regex> | /status_(ordem|ship) | Amostra somente intervalos com operação que corresponde ao regex. |
Métodos de Configuração
- Propriedades de Regra Única: Uma maneira fácil de definir uma regra aplicável a todos os rastreamentos.
- Arquivo de Configuração: Uma forma abrangente de definir amostragens, incluindo regras de ramificação e regras de prioridade da operação.
Se ambos os métodos forem configurados, as propriedades de regra única terão precedência sobre o arquivo de configuração, portanto, o método de propriedades de regra única será o que está sendo usado.
Não há configuração de amostragem padrão. Se não houver nenhuma propriedade de regra única ou nenhum arquivo de configuração tiver sido especificado, todos os novos rastreamentos iniciados pelo Agente do APM ou pelo Rastreador do APM serão amostrados.
Propriedades de Regra Única
As propriedades de regra única permitem que uma regra de amostragem seja definida e aplicada a todos os rastreamentos de maneira fácil.
As propriedades a seguir estão disponíveis:
Tipo e Descrição de Propriedades | Suportado por | Propriedades | Exemplo |
---|---|---|---|
AgentConfig.properties Atualiza o arquivo |
Agente do APM |
|
|
Tracer Builder Atualiza o Tracer Builder. |
Rastreador do APM |
|
|
Propriedades do Sistema Atualiza as propriedades do sistema. |
Agente do APM e Rastreador do APM |
|
|
Variáveis de Ambiente Atualiza as variáveis de ambiente. |
Agente do APM e Rastreador do APM |
|
Para Windows:
Para Linux:
|
Precedência de propriedades: se mais de uma propriedade estiver definida, a ordem de precedência da mais alta para a mais baixa será a seguinte: Propriedades do Sistema, Variáveis de Ambiente e AgentConfig.properties.
Arquivo de Configuração
O arquivo de configuração permite que todos os recursos de amostragem de todos os serviços sejam especificados em um único arquivo com as seguintes características:
- O arquivo de configuração está no formato ACML (subconjunto de YAML) a ser especificado em
Sampling.acml
. - Várias configurações de amostragem para diferentes serviços podem ser definidas e compartilhadas de um único arquivo de configuração.
- A regra de amostragem não está limitada a uma. As regras de amostra podem ser ramificadas para outras regras para formar uma árvore de regras. Cada avaliação de regra tem 2 resultados: verdadeiro ou falso. Verdadeiro significa que o rastreamento é amostrado, falso significa que não é amostrado. Em uma regra ramificada, o resultado da folha terminal é utilizado para a decisão de amostragem.
- Regras com nomes específicos podem ser priorizadas com sua própria regra de amostragem.
Para o Rastreador do APM, não há local de configuração padrão. O arquivo de configuração de amostragem deve ser especificado com a propriedade do rastreador, a propriedade do sistema ou a variável de ambiente usando a propriedade com.oracle.apm.agent.sampling.file
. O valor da propriedade é o caminho completo do arquivo de configuração de amostragem.
A propriedade com.oracle.apm.agent.sampling.file
só é aplicável ao Rastreador do APM. Para o Agente do APM, a propriedade não é necessária. Você só precisa colocar o arquivo de amostra Sampling.acml
no diretório oracle-apm-agent/config/<version>
.
Tipo e Descrição de Propriedades | Suportado por | Property | Exemplo |
---|---|---|---|
Tracer Builder
Atualize o construtor de rastreador. |
Rastreador do APM | com.oracle.apm.agent.sampling.file |
|
Propriedade do Sistema Atualiza as propriedades do sistema. |
Agente do APM e Rastreador do APM | com.oracle.apm.agent.sampling.file |
-Dcom.oracle.apm.agent.sampling.file=/home/user/apm/config/Sampling.acml |
Variável de Ambiente
Atualiza a variável de ambiente. |
Agente do APM e Rastreador do APM | com_oracle_apm_agent_sampling_file |
Para Windows:
Para Linux:
|
O valor da propriedade com.oracle.apm.agent.sampling.file
é o caminho completo do arquivo de configuração de amostragem. Quando especificado, o nome do arquivo de configuração de amostragem recomendado é Sampling.acml
, mas você pode usar qualquer outro nome preferencial.
- Amostragem: Usa a entrada
sampling
e define uma árvore de regras para avaliação de rastreamento. - Prioridade da Operação: Usa a entrada
operation_priority
e, quando é definida, substitui a amostragem se o nome da operação do intervalo raiz de rastreamento corresponder ao nome definido. Cada nome de operação definido tem sua própria árvore de regras de decisão.
Decisão de pré-amostragem
A decisão de pré-amostragem é um recurso de amostragem que permite ao amostrador tomar uma decisão com base no intervalo pai antes de aplicar a regra de amostragem.
Exemplo:
sampling_config:
-
service:
- s1
- s2
pre_sampling_decision:
ignore: rum
sampling:
rule: constant
param: 1000
true:
rule: per-operation-rate
param: 1000/60
Para obter detalhes sobre a sintaxe pre_sampling_decision
, consulte Formato de Arquivo Sampling.acml.
Formato de Arquivo Sampling.acml
Veja a seguir o formato de arquivo Sampling.acml
:
Sampling.acml | Descrição |
---|---|
|
Nó que representa um array de diferentes configurações de amostragem. |
|_ |
Elemento de array da configuração de amostragem. |
|____ |
Nó de nomes de serviço ao qual esta configuração de amostragem é aplicada. |
|_______ |
Elemento de array do nome do serviço. |
|____ |
(Opcional) Nó de decisão de pré-amostragem.
A decisão é avaliada na ordem de substituição → forçar → ignorar. Caso uma origem seja definida em mais de uma decisão, a primeira decisão que tem a origem correspondente será usada. Quando nenhum tipo de pai corresponde a qualquer decisão, o Agente do APM segue o indicador de amostragem de intervalo pai para o intervalo local. Se não houver intervalo pai, a regra de amostragem será avaliada para o intervalo local. Todos os nós de decisão são opcionais. Se nenhuma decisão de pré-amostragem for necessária, |
|_______ |
Amostra do Agente do APM local, independentemente do flag de amostra pai da origem especificada. Se o intervalo pai não for amostrado, um novo rastreamento será iniciado com o intervalo local como raiz. Para valores |
|_______ |
Force a reavaliação de amostragem, independentemente do indicador pai amostrado da origem especificada. Se o intervalo pai não for amostrado e o intervalo do Agente APM local for avaliado para ser amostrado, um novo rastreamento será iniciado. Se o intervalo pai for amostrado e o intervalo do Agente do APM local for avaliado para ser amostrado, o intervalo do Agente do APM local continuará no rastreamento do intervalo pai. Para valores |
|_______ |
Ignorar amostragem do intervalo do Agente do APM local do pai especificado. Para valores |
|____ |
Nó da amostragem base.
É opcional se o nó |
|_______ |
Árvore de regras de amostragem desta configuração. |
|____ |
Array de nomes de operação com regras que substituem a regra de amostragem base. |
|_______ |
Nome para corresponder ao nome da operação de intervalo raiz de rastreamento. |
|_______ |
Regra a ser aplicada, se houver correspondência. |
|_______ |
Regex para corresponder ao nome da operação de intervalo raiz de rastreamento. |
|_______ |
Regra a ser aplicada, se houver correspondência. |
-
Se o nó de serviço (
service:
) não for especificado, a configuração de amostragem será aplicada a todos os serviços sem configuração de amostragem dedicada. Quando várias configurações têm o mesmo nome de serviço, somente a última configuração com esse nome de serviço é usada.Se um arquivo tiver configurações com e sem esse nó de serviço, a configuração com o nome de serviço correspondente ao nome de serviço do Agente do APM ou Rastreador do APM será priorizada.
-
Quando os nós de amostragem (
sampling:
) e operation_priority (operation_priority:
) são especificados, o operation_priority é priorizado. Se o nome do intervalo raiz de rastreamento corresponder ao nome da operação do nó operation_priority, ele será avaliado com a regra associada ao nome da operação. Se o nome do intervalo raiz de rastreamento não corresponder a nenhum nome de operação do nó operation_priority, o nó de amostragem será avaliado. -
Se o nó de amostragem (
sampling:
) não for especificado ou nenhuma regra for especificada, o rastreamento não será amostrado quando nenhuma regra operation_priority for aplicável. -
Quando o nó operation_priority (
operation_priority:
) for especificado, se o nome da operação do intervalo raiz de rastreamento corresponder a qualquer nome de operação operation_priority, a regra de nome correspondente será usada para avaliação, em vez da regra de amostragem base.
Nó da Regra
O nó de regra do arquivo Sampling.acml
tem o seguinte formato:
<regra> nó | Descrição |
---|---|
rule: <rule_name> |
Nome da regra de amostragem. |
param: <rule_parameter> |
Parâmetro da regra. |
true: |
Resultado verdadeiro da avaliação da regra. O valor pode ser outra <regra> ou vazio.
Se este nó não for especificado ou o valor do nó estiver vazio, a avaliação verdadeira também será o resultado da avaliação de amostragem final e o rastreamento será amostrado. |
|___ <rule> |
Nó <rule> da ramificação na avaliação verdadeira. |
false: |
Resultado falso da avaliação da regra. O valor pode ser outra <regra> ou vazio.
Se este nó não for especificado ou o valor do nó estiver vazio, a avaliação falsa também será o resultado da avaliação final e o rastreamento não será amostrado. |
|___ <rule> |
Nó <rule> da ramificação na avaliação falsa. |
As alterações no arquivo de configuração de amostragem Sampling.acml
não requerem a reinicialização do Agente do APM.
Valor de Origem
Se estiver usando pre_sampling_decision
, você terá a opção de fornecer as informações de origem.
O valor <source>
do arquivo Sampling.acml
pode ficar vazio ou pode conter várias origens. Para obter os valores suportados, consulte a tabela abaixo.
Nome da Origem | Descrição |
---|---|
programa | Origem do Agente do APM. |
rum | Origem RUM (Monitoramento Real do Usuário).
Não é a extensão do Agente do APM e sempre a extensão pai do Agente Java. |
sintético | Fonte sintética.
Por padrão, todas as solicitações sintéticas são amostradas. |
* | Qualquer fonte. |
? | Qualquer tipo de origem não definido em <source>. |
nulo | Qualquer pai sem origem identificável. |
Exemplos de arquivo Sampling.acml
- Regra que se aplica a todos os serviços
sampling_config: - sampling: # Every trace has 2% chance to be sampled. rule: probabilistic param: 0.02
- Probabilística com contagem mínima
sampling_config: - sampling: # For every 60 seconds duration, 5 root spans of each operation name are sampled, # followed by 10% chance of sampling. rule: per-operation-rate param: 5/60 true: false: rule: probabilistic param: 0.1
- Amostra apenas operações especificadas
sampling_config: - service: - order_dept - shipping_dept operation_priority: # For /order operation trace root span, 1 of every 10 traces is sampled. - name: "/order" rule: constant param: 10 # For /ship operation trace root span, 1 of every 50 traces is sampled. - name: "/ship" rule: constant param: 50 # For /status_order or /status_ship operations, there is a 50% sampling chance. - regex: "/status_(order|ship)" rule: probabilistic param: 0.5
- Outro exemplo de amostra
sampling_config: - # With service node, this config is only applied to service s1 and s2. service: - s1 - s2 sampling: # 5 root span of any operation name are sampled every 60 seconds. Starting from # the 6th span of an operation name, there is a 20% chance the span is sampled. rule: per-operation-rate param: 5/60 false: rule: probabilistic param: 0.2 operation_priority: # For /order operation, 1 of every 10 spans is sampled. - name: "/order" rule: constant param: 10 # For /ship operation, first 3 are sampled per 60 seconds and then 10% chance after - name: "/ship" rule: limited-rate param: 3/60 false: rule: probabilistic param: 0.01 - # With service node, this config is only applied to service s3 and s4. service: - s3 - s4 sampling: # There is a 5% chance any trace is sampled. rule: probabilistic param: 0.05 - # Without service node, this config is applied to any service except s1, s2, s3 and s4. sampling: # There is a 10% chance any trace is sampled. rule: probabilistic param: 0.1
Desativar Amostragem
A amostragem é ativada implicitamente quando as propriedades de uma única regra ou o arquivo de configuração é especificado. Ela pode ser desativada explicitamente utilizando a seguinte propriedade:
Tipo de Propriedade | Suportado por | Property | Exemplo |
---|---|---|---|
AgentConfig.properties | Agente do APM | com.oracle.apm.agent.sampling.enabled |
com.oracle.apm.agent.sampling.enabled=false |
Tracer Builder | Rastreador do APM | com.oracle.apm.agent.sampling.enabled |
|
Propriedade do Sistema | Agente do APM e Rastreador do APM | com.oracle.apm.agent.sampling.enabled |
-Dcom.oracle.apm.agent.sampling.enabled=false |
Variável de Ambiente | Agente do APM e Rastreador do APM | com_oracle_apm_agent_sampling_enabled |
Para Windows:
Para Linux:
|
Tag de Intervalo
Se as propriedades da regra de amostragem ou o arquivo de configuração forem especificados e a amostragem não estiver desativada, cada intervalo raiz de rastreamento de amostra terá uma tag SamplingEvaluation
de fluxo de avaliação.
rule: per-operation-rate
param: 5/60
false:
rule: probabilistic
param: 0.2
Valor da Tag SamplingEvaluation
Veja abaixo o valor da tag SamplingEvaluation
do intervalo raiz amostrado:
SamplingEvaluation Tag Value
|
Descrição |
---|---|
per-operation-rate(5/60):true | Os primeiros 5 rastreamentos amostrados a cada 60 segundos. |
per-operation-rate(5/60):false->probabilistic(0.2):true | Os 20% de rastreamentos amostrados após 5 rastreamentos amostrados a cada 60 segundos. |