Encaminhamento de logs log-forwarding
Os clientes que têm uma licença para um fornecedor de registro ou hospedam um produto de registro podem ter registros AEM (incluindo Apache/Dispatcher) e registros CDN encaminhados aos destinos de registro associados. O AEM as a Cloud Service oferece suporte aos seguintes destinos de registro:
- Armazenamento Azure Blob
- DataDog
- Elasticsearch ou OpenSearch
- HTTPS
- Splunk
O encaminhamento de logs é configurado de maneira automatizada declarando uma configuração no Git e implantando-a por meio do Pipeline de configuração do Cloud Manager para tipos de ambiente de desenvolvimento, preparo e produção em programas de produção (não sandbox).
Há uma opção para que os registros AEM e Apache/Dispatcher sejam roteados por meio da infraestrutura de rede avançada do AEM, como IP de saída dedicado.
Observe que a largura de banda da rede associada aos registros enviados ao destino de registro é considerada parte do uso de E/S da rede da organização.
Como este artigo está organizado how-organized
Este artigo está organizado da seguinte maneira:
- Configuração - comum para todos os destinos de registro
- Configurações de destino de registro - cada destino tem um formato um pouco diferente
- Formatos de Entrada de Log - informações sobre os formatos de entrada de log
- Rede avançada - envio de registros AEM e Apache/Dispatcher por meio de uma saída dedicada ou por meio de uma VPN
Configurar setup
-
Crie a seguinte estrutura de pasta e arquivo na pasta de nível superior em seu projeto no Git:
code language-none config/ logForwarding.yaml
-
logForwarding.yaml
deve conter metadados e uma configuração semelhante ao seguinte formato (usamos o Splunk como exemplo).code language-none kind: "LogForwarding" version: "1" metadata: envTypes: ["dev"] data: splunk: default: enabled: true host: "splunk-host.example.com" token: "${{SPLUNK_TOKEN}}" index: "AEMaaCS"
O parâmetro kind deve ser definido como
LogForwarding
, a versão deve ser definida como a versão do esquema, que é 1.Os tokens na configuração (como
${{SPLUNK_TOKEN}}
) representam segredos que não devem ser armazenados no Git. Em vez disso, declare-as como Variáveis de ambiente do Cloud Manager do tipo segredo. Selecione Todos como o valor suspenso do campo Serviço aplicado, para que os logs possam ser encaminhados para os níveis de criação, publicação e visualização.É possível definir valores diferentes entre logs CDN e logs AEM (incluindo Apache/Dispatcher), incluindo um bloco cdn e/ou aem adicional após o bloco padrão, em que as propriedades podem substituir as definidas no bloco padrão; somente a propriedade habilitada é necessária. Um possível caso de uso poderia ser o uso de um índice do Splunk diferente para logs CDN, como ilustra o exemplo abaixo.
code language-none kind: "LogForwarding" version: "1" metadata: envTypes: ["dev"] data: splunk: default: enabled: true host: "splunk-host.example.com" token: "${{SPLUNK_TOKEN}}" index: "AEMaaCS" cdn: enabled: true token: "${{SPLUNK_TOKEN_CDN}}" index: "AEMaaCS_CDN"
Outro cenário é desabilitar o encaminhamento dos logs CDN ou dos logs AEM (incluindo o Apache/Dispatcher). Por exemplo, para encaminhar apenas os logs CDN, é possível configurar o seguinte:
code language-none kind: "LogForwarding" version: "1" metadata: envTypes: ["dev"] data: splunk: default: enabled: true host: "splunk-host.example.com" token: "${{SPLUNK_TOKEN}}" index: "AEMaaCS" aem: enabled: false
-
Para tipos de ambiente diferentes do RDE (que não é compatível no momento), crie um pipeline de configuração de implantação direcionada no Cloud Manager; observe que os pipelines de Empilhamento completo e de Camada da Web não implantam o arquivo de configuração.
Configuração de destino de registro logging-destinations
As configurações para os destinos de registro compatíveis estão listadas abaixo, juntamente com considerações específicas.
Armazenamento Azure Blob azureblob
kind: "LogForwarding"
version: "1"
metadata:
envTypes: ["dev"]
data:
azureBlob:
default:
enabled: true
storageAccountName: "example_acc"
container: "aem_logs"
sasToken: "${{AZURE_BLOB_SAS_TOKEN}}
Um token SAS deve ser usado para autenticação. Ela deve ser criada na página Shared access signature, em vez de na página Shared access token, e deve ser configurada com estas configurações:
- Serviços permitidos: o blob deve ser selecionado.
- Recursos permitidos: o objeto deve ser selecionado.
- Permissões permitidas: Gravar, Adicionar, Criar devem ser selecionadas.
- Uma data/hora de início e expiração válidas.
Esta é uma captura de tela de um exemplo de configuração de token SAS:
Logs CDN do Armazenamento de Blobs do Azure azureblob-cdn
Cada um dos servidores de log distribuídos globalmente produzirá um novo arquivo a cada poucos segundos, na pasta aemcdn
. Depois de criado, o arquivo não será mais anexado ao. O formato do nome do arquivo é AAAA-MM-DDThh:mm:ss.sss-uniqueid.log. Por exemplo, 2024-03-04T10:00:00.000-WnFWYN9BpOUs2aOVn4ee.log.
Como exemplo, em algum momento:
aemcdn/
2024-03-04T10:00:00.000-abc.log
2024-03-04T10:00:00.000-def.log
E 30 segundos depois:
aemcdn/
2024-03-04T10:00:00.000-abc.log
2024-03-04T10:00:00.000-def.log
2024-03-04T10:00:30.000-ghi.log
2024-03-04T10:00:30.000-jkl.log
2024-03-04T10:00:30.000-mno.log
Cada arquivo contém várias entradas de log json, cada uma em uma linha separada. Os formatos de entrada de log estão descritos no artigo de log, e cada entrada de log também inclui as propriedades adicionais mencionadas na seção Formatos de Entrada de Log abaixo.
Logs AEM do Armazenamento Azure Blob azureblob-aem
Os logs de AEM (incluindo o Apache/Dispatcher) aparecem abaixo de uma pasta com a seguinte convenção de nomenclatura:
- aemaccess
- aemerror
- aemdispatcher
- httpdaccess
- httpderror
Em cada pasta, um único arquivo será criado e anexado a. Os clientes são responsáveis pelo processamento e gerenciamento desse arquivo, de modo que ele não fique muito grande.
Consulte os formatos de entrada de log no artigo de log. As entradas de log também incluirão as propriedades adicionais mencionadas na seção Formatos de Entrada de Log abaixo.
Datadog datadog
kind: "LogForwarding"
version: "1"
metadata:
envTypes: ["dev"]
data:
datadog:
default:
enabled: true
host: "http-intake.logs.datadoghq.eu"
token: "${{DATADOG_API_KEY}}"
tags:
tag1: value1
tag2: value2
Considerações:
- Crie uma Chave de API sem nenhuma integração com um provedor de nuvem específico.
- a propriedade tags é opcional
Elasticsearch e OpenSearch elastic
kind: "LogForwarding"
version: "1"
metadata:
envTypes: ["dev"]
data:
elasticsearch:
default:
enabled: true
host: "example.com"
user: "${{ELASTICSEARCH_USER}}"
password: "${{ELASTICSEARCH_PASSWORD}}"
pipeline: "ingest pipeline name"
Considerações:
- Para credenciais, certifique-se de usar as credenciais de implantação, em vez das credenciais de conta. Estas são as credenciais geradas em uma tela que pode se parecer com esta imagem:
- A propriedade opcional do pipeline deve ser definida como o nome do pipeline de assimilação de Elasticsearch ou OpenSearch, que pode ser configurado para rotear a entrada de log para o índice apropriado. O tipo de Processador do pipeline deve ser definido como script e a linguagem de script deve ser definida como indolor. Este é um exemplo de trecho de script para rotear entradas de log em um índice, como aemaccess_dev_26_06_2024:
def envType = ctx.aem_env_type != null ? ctx.aem_env_type : 'unknown';
def sourceType = ctx._index;
def date = new SimpleDateFormat('dd_MM_yyyy').format(new Date());
ctx._index = sourceType + "_" + envType + "_" + date;
HTTPS https
kind: "LogForwarding"
version: "1"
metadata:
envTypes: ["dev"]
data:
https:
default:
enabled: true
url: "https://example.com:8443/aem_logs/aem"
authHeaderName: "X-AEMaaCS-Log-Forwarding-Token"
authHeaderValue: "${{HTTPS_LOG_FORWARDING_TOKEN}}"
Considerações:
- A cadeia de caracteres da URL deve incluir https:// ou a validação falhará. Se nenhuma porta for incluída na string do URL, a porta 443 (a porta HTTPS padrão) será considerada.
- Se você quiser usar uma porta diferente de 443, forneça-a como parte do URL.
Logs HTTPS CDN https-cdn
As solicitações da Web (POSTs) serão enviadas continuamente, com uma carga json que é uma matriz de entradas de log, com o formato de entrada de log descrito no artigo de log. Propriedades adicionais são mencionadas na seção Formatos de Entrada de Log abaixo.
Também existe uma propriedade chamada sourcetype
, que é definida como o valor aemcdn
.
/.well-known/fastly/logging/challenge
deve responder com um asterisco *
no corpo e código de status 200.Logs AEM HTTPS https-aem
Para logs AEM (incluindo apache/dispatcher), as solicitações da Web (POSTs) serão enviadas continuamente, com uma carga json que é uma matriz de entradas de log, com os vários formatos de entrada de log conforme descrito no artigo de log. Propriedades adicionais são mencionadas na seção Formatos de Entrada de Log abaixo.
Também há uma propriedade chamada sourcetype
, que é definida como um destes valores:
- aemaccess
- aemerror
- aemdispatcher
- httpdaccess
- httpderror
Splunk splunk
kind: "LogForwarding"
version: "1"
metadata:
envTypes: ["dev"]
data:
splunk:
default:
enabled: true
host: "splunk-host.example.com"
token: "${{SPLUNK_TOKEN}}"
index: "AEMaaCS"
Formatos de entrada de log log-formats
Consulte o artigo de log geral para o formato de cada tipo de log respectivo (logs CDN e logs AEM, incluindo Apache/Dispatcher).
Como os registros de vários programas e ambientes podem ser encaminhados para o mesmo destino de registro, além da saída descrita no artigo de registro, as seguintes propriedades serão incluídas em cada entrada de registro:
- aem_env_id
- aem_env_type
- aem_program_id
- aem_tier
Como exemplo, as propriedades podem ter os seguintes valores:
aem_env_id: 1242
aem_env_type: dev
aem_program_id: 12314
aem_tier: author
Rede avançada advanced-networking
Algumas organizações escolhem restringir qual tráfego pode ser recebido pelos destinos de registro.
Para o log CDN, você pode adicionar os endereços IP à lista de permissões, conforme descrito em este artigo. Se essa lista de endereços IP compartilhados for muito grande, considere enviar tráfego para um Azure Blob Store (não Adobe) em que a lógica possa ser gravada para enviar os logouts de um IP dedicado para seu destino final.
Para logs AEM (incluindo Apache/Dispatcher), você pode configurar o encaminhamento de logs para passar pela rede avançada. Consulte os padrões dos três tipos avançados de rede abaixo, que usam um parâmetro port
opcional, juntamente com o parâmetro host
.
Saída flexível da porta flex-port
Se o tráfego de log for para uma porta diferente da 443 (por exemplo, 8443 abaixo), configure a rede avançada da seguinte maneira:
{
"portForwards": [
{
"name": "splunk-host.example.com",
"portDest": 8443, # something other than 443
"portOrig": 30443
}
]
}
e configure o arquivo yaml da seguinte maneira:
kind: "LogForwarding"
version: "1"
data:
splunk:
default:
host: "${{AEM_PROXY_HOST}}"
token: "${{SomeToken}}"
port: 30443
index: "index_name"
IP de saída dedicado dedicated-egress
Se o tráfego de log precisar vir de um IP de saída dedicado, configure redes avançadas da seguinte maneira:
{
"portForwards": [
{
"name": "splunk-host.example.com",
"portDest": 443,
"portOrig": 30443
}
]
}
e configure o arquivo yaml da seguinte maneira:
kind: "LogForwarding"
version: "1"
metadata:
envTypes: ["dev"]
data:
splunk:
default:
enabled: true
index: "index_name"
token: "${{SPLUNK_TOKEN}}"
aem:
enabled: true
host: "${{AEM_PROXY_HOST}}"
port: 30443
cdn:
enabled: true
host: "splunk-host.example.com"
port: 443
VPN vpn
Se o tráfego de log precisar passar por uma VPN, configure a rede avançada da seguinte maneira:
{
"portForwards": [
{
"name": "splunk-host.example.com",
"portDest": 443,
"portOrig": 30443
}
]
}
kind: "LogForwarding"
version: "1"
metadata:
envTypes: ["dev"]
data:
splunk:
default:
enabled: true
index: "index_name"
token: "${{SPLUNK_TOKEN}}"
aem:
enabled: true
host: "${{AEM_PROXY_HOST}}"
port: 30443
cdn:
enabled: true
host: "splunk-host.example.com"
port: 443