Encaminhador do Chronicle para Linux
Neste documento, descrevemos como instalar e configurar o encaminhador no Linux. Para instalar o encaminhador no Windows, consulte Encaminhador do Windows.
O encaminhador é usado para enviar registros do ambiente do cliente para a instância do Chronicle. Ele é usado quando os clientes querem enviar os registros diretamente para o Chronicle e não querem usar os buckets do Cloud para ingerir dados ou quando o logtype não tem ingestão nativa por API de terceiros. O encaminhador pode ser usado como uma solução pronta para implantação, em vez de incorporar manualmente a API de ingestão.
É possível instalar o encaminhador em várias distribuições do Linux, incluindo Debian, Ubuntu, Red Hat e Suse. O Google Cloud fornece o software usando um contêiner do Docker. É possível executar e gerenciar o contêiner do Docker em uma máquina física ou virtual executando o Linux.
Requisitos do sistema
Confira a seguir recomendações gerais. Para receber recomendações específicas para seu sistema, entre em contato com o suporte do Chronicle.
RAM: 1 GB para cada tipo de dados coletados (coletor) que o Chronicle aceita para ingestão. Por exemplo, se você especificou quatro coletores diferentes, precisa de 4 GB de RAM para coletar dados de todos eles.
CPU: 2 CPUs são suficientes para processar menos de 10.000 eventos por segundo (EPS,na sigla em inglês) (total para todos os tipos de dados). Se você pretende encaminhar mais de 10.000 EPS, provisione de 4 a 6 CPUs.
Disco: 100 MB de espaço em disco são suficientes, independente da quantidade de dados processados pelo encaminhador do Chronicle. Se você precisar armazenar mensagens de backlog em buffer no disco e não na memória, consulte Armazenamento em buffer de disco. Por padrão, o encaminhador do Chronicle armazena em buffer na memória.
Intervalos de endereços IP do Google
Talvez você precise que o intervalo de endereços IP seja aberto ao definir uma configuração de encaminhador, como ao definir a configuração do firewall. O Google não consegue fornecer uma lista específica de endereços IP. No entanto, você pode ter intervalos de endereços IP do Google.
Verifique a configuração do firewall
Todos os firewalls ou proxies autenticados entre o contêiner do encaminhador do Chronicle e a Internet exigem regras para abrir o acesso aos seguintes hosts:
Tipo de conexão | Destino | Port |
TCP | malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-northeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-south1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | australia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west2-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west3-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west6-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-central2-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-west1-malachiteingestion-pa.googleapis.com | 443 |
TCP | northamerica-northeast2-malachiteingestion-pa.googleapis.com | 443 |
TCP | accounts.google.com | 443 |
TCP | gcr.io | 443 |
TCP | oauth2.googleapis.com | 443 |
TCP | storage.googleapis.com | 443 |
Personalizar os arquivos de configuração
O Google Cloud adapta os arquivos de configuração à instância do encaminhador com metadados específicos, conforme mostrado na seção de saída. Você pode fazer o download do arquivo de configuração de acordo com seus requisitos e incluir informações sobre os tipos de registro a serem ingeridos na seção de coletores. Para mais informações sobre as definições de configuração, consulte a Referência das definições de configuração.
Configurar o encaminhador do Linux
Para configurar o encaminhador do Linux pela UI, consulte Gerenciar configurações de encaminhador pela IU do Chronicle.
Para configurar o encaminhador do Linux manualmente, faça o seguinte:
Faça uma cópia do modelo do arquivo de configuração fornecido com o software.
Faça o download do arquivo de configuração por meio da UI.
Salve os dois arquivos no mesmo diretório usando a seguinte convenção de nomenclatura:
FORWARDER_NAME
.conf: use esse arquivo para definir as configurações relacionadas à ingestão de registros.FORWARDER_NAME
_auth.conf: use esse arquivo para definir as credenciais de autorização.Modifique os arquivos para incluir a configuração da sua instância do encaminhador. Use os exemplos fornecidos neste documento como referência.
Verifique se há uma entrada para cada entrada no arquivo
FORWARDER_NAME
_auth.conf, mesmo que a entrada não tenha detalhes de autenticação correspondentes. Isso é necessário para mapear os dados corretamente.
Todas as alterações feitas no arquivo de configuração serão aplicadas automaticamente pelo encaminhador em até cinco minutos.
Exemplo de configuração
O exemplo de código a seguir mostra o formato dos arquivos de configuração de um encaminhador. Para detalhes sobre as configurações de cada tipo de mecanismo de ingestão, como Splunk ou Syslog, consulte Coletar dados.
O arquivo FORWARDER_NAME.conf
output: url: malachiteingestion-pa.googleapis.com:443 identity: identity: collector_id: COLLECTOR_ID \ customer_id: CUSTOMER_ID \ collectors: - syslog: common: enabled: true data_type: "WINDOWS_DHCP" data_hint: batch_n_seconds: 10 batch_n_bytes: 1048576 tcp_address: 0.0.0.0:10514 udp_address: 0.0.0.0:10514 connection_timeout_sec: 60 tcp_buffer_size: 524288 - syslog: common: enabled: true data_type: "WINDOWS_DNS" data_hint: batch_n_seconds: 10 batch_n_bytes: 1048576 tcp_address: 0.0.0.0:10515 connection_timeout_sec: 60 tcp_buffer_size: 524288
O arquivo FORWARDER_NAME_auth.conf
output: identity: secret_key: | { "type": "service_account", "project_id": "PROJECT_ID" \, "private_key_id": "PRIVATE_KEY_ID" \, "private_key": "-----BEGIN PRIVATE KEY-----\\"PRIVATE_KEY" \n-----END PRIVATE KEY-----\n", "client_email": "CLIENT_EMAIL" \, "client_id": "CLIENT_ID" \, "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-account-1%40example-account.iam.gserviceaccount.com" } collectors: - syslog: - syslog: certificate: "../forwarder/inputs/testdata/localhost.pem" certificate_key: "../forwarder/inputs/testdata/localhost.key"
Esse sistema de dois arquivos permite armazenar credenciais de autenticação em um arquivo
separado para aumentar a segurança. É possível armazenar o arquivo FORWARDER_NAME
.conf
em um
repositório de controle de versão ou em qualquer sistema aberto de gerenciamento de configuração. É possível armazenar o arquivo
FORWARDER_NAME
_auth.conf diretamente na máquina física ou virtual que executa o encaminhador.
Exemplo de configuração (arquivo único)
output: url: malachiteingestion-pa.googleapis.com:443 identity: identity: collector_id: "COLLECTOR_ID" \ customer_id: "CUSTOMER_ID" \ secret_key: | { "type": "service_account", "project_id": "PROJECT_ID" \, "private_key_id": "PRIVATE_KEY_ID" \, "private_key": "-----BEGIN PRIVATE KEY-----\ "PRIVATE_KEY" \n-----END PRIVATE KEY-----\n", "client_email": "CLIENT_EMAIL" \, "client_id": "CLIENT_ID" \, "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/malachite-test-1%40malachite-test.iam.gserviceaccount.com" } collectors: - syslog: common: enabled: true data_type: "WINDOWS_DHCP" data_hint: batch_n_seconds: 10 batch_n_bytes: 1048576 tcp_address: 0.0.0.0:10514 udp_address: 0.0.0.0:10514 connection_timeout_sec: 60 tcp_buffer_size: 524288 - syslog: common: enabled: true data_type: "WINDOWS_DNS" data_hint: batch_n_seconds: 10 batch_n_bytes: 1048576 tcp_address: 0.0.0.0:10515 connection_timeout_sec: 60 certificate: "../forwarder/inputs/testdata/localhost.pem" certificate_key: "../forwarder/inputs/testdata/localhost.key" tcp_buffer_size: 524288
Se você estiver usando um único arquivo de configuração e quiser migrar para os dois sistemas de arquivos, faça o seguinte:
- Crie uma cópia da sua configuração.
- Salve um arquivo como
FORWARDER_NAME
.conf e exclua as credenciais de autorização. - Salve o outro arquivo como
FORWARDER_NAME
_auth.conf e exclua todos os dados de não autorização do arquivo. Use os arquivos de configuração de amostra neste guia como referência. - Siga a convenção de nomenclatura e outras diretrizes mencionadas na seção Personalizar os arquivos de configuração.
Instalar o Docker
A instalação do Docker depende do ambiente do host. Você pode instalar o Docker em diferentes sistemas operacionais de host. O Google Cloud oferece documentação limitada para ajudar você a instalar o Docker em várias das distribuições do Linux mais conhecidas. No entanto, o Docker é de código aberto, e toda a documentação necessária já está disponível. Para instruções sobre a instalação do Docker, consulte a documentação do Docker.
Depois que o Docker for instalado no sistema, o processo de instalação do encaminhador do Chronicle será semelhante a qualquer tipo de distribuição do Linux.
Para verificar se o Docker está instalado corretamente no sistema, execute o seguinte comando (privilégios elevados):
docker ps
A resposta a seguir indica que o Docker foi instalado corretamente:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Comandos úteis do Docker
Colete mais informações sobre a instalação do Docker usando o seguinte comando:
docker info
O serviço Docker pode ser desativado por padrão. Para verificar se ela está desativada, execute o seguinte comando:
systemctl is-enabled docker
Para ativar o serviço do Docker e iniciá-lo imediatamente, execute um dos seguintes comandos:
sudo systemctl enable --now docker
sudo systemctl enable /usr/lib/systemd/system/docker.service
Saída:
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
Ao iniciar um encaminhador, execute o seguinte comando para que ele seja reiniciado automaticamente:
sudo docker run --restart=always `IMAGE_NAME`
IMAGE_NAME
é o nome da imagem do encaminhador.Para verificar o status e os detalhes do serviço do Docker, execute o seguinte comando:
sudo systemctl status docker
Saída:
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 263 (dockerd) Tasks: 20 Memory: 100.4M CGroup: /system.slice/docker.service └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock" Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
Se você tiver algum problema com o Docker, a equipe de suporte do Chronicle poderá solicitar a saída desse comando para ajudar e depurar o problema.
Instalar o encaminhador no Linux
Nesta seção, descrevemos como instalar o Chronicle Forwarder usando um contêiner do Docker em um sistema Linux.
Etapa 1: Fazer o download, transferir e instalar os arquivos de configuração do encaminhador
O Chronicle fornece arquivos de configuração do encaminhador específicos para seu sistema operacional (Linux ou Windows). Você pode fazer o download do arquivo de configuração conforme seus requisitos. Depois de concluir as etapas a seguir, transfira os arquivos de configuração do seu laptop para o diretório /opt/chronicle/config
do encaminhador, que está no diretório principal do usuário.
Conecte-se ao host do encaminhador do Linux via terminal.
Crie um novo usuário no host do encaminhador do Linux.
adduser
USERNAME
passwdUSERNAME
usermod -aG wheelUSERNAME
Altere o diretório para o diretório inicial do novo usuário que executa o contêiner do Docker.
Crie um diretório para armazenar os arquivos de configuração do encaminhador do Chronicle:
mkdir /opt/chronicle/config
Mude o diretório.
cd /opt/chronicle/config
Depois que os arquivos forem transferidos, verifique se os arquivos de configuração estão localizados no diretório /opt/chronicle/config:
ls -l
Etapa 2: Executar o encaminhador no contêiner do Docker
É possível usar os seguintes procedimentos para iniciar o encaminhador do Chronicle pela primeira vez e para fazer upgrade para a versão mais recente do contêiner do Chronicle:
As opções --log-opt
estão disponíveis desde o Docker 1.13. Essas opções limitam o tamanho dos arquivos de registros do contêiner e precisam ser usadas se a versão do Docker for compatível com elas.
Se você estiver fazendo upgrade, comece limpando todas as execuções anteriores do Docker. No exemplo a seguir, o nome do contêiner do Docker é
cfps
. Consiga a imagem mais recente do Docker do Google Cloud com o comandodocker pull
, conforme mostrado abaixo.docker stop cfps
docker rm cfps
Consiga a imagem mais recente do Docker no Google Cloud:
docker pull gcr.io/chronicle-container/cf_production_stable
Inicie o encaminhador do Chronicle no contêiner do Docker:
docker run \ --detach \ --name cfps \ --restart=always \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v /opt/chronicle/config:/opt/chronicle/external \ gcr.io/chronicle-container/cf_production_stable
Conferir registros do encaminhador
Para ver os registros do encaminhador do Chronicle, execute o seguinte comando:
sudo docker logs cfps
Para ver o caminho do arquivo em que os registros estão armazenados, execute o seguinte comando:
docker inspect --format='{{.LogPath}}' CONTAINER_NAME
Para visualizar os registros de execução em tempo real, execute o seguinte comando:
sudo docker logs cfps -f
Para armazenar os registros em um arquivo, execute o seguinte comando:
sudo docker logs cfps &> logs.txt
Desinstalar o encaminhador
Os comandos do Docker a seguir ajudam a interromper e desinstalar ou remover o encaminhador do Chronicle.
Para interromper ou desinstalar o contêiner do encaminhador:
docker stop cfps
Para remover o contêiner do encaminhador:
docker rm cfps
Atualizar o encaminhador
O encaminhador do Chronicle tem duas partes e é atualizado da seguinte maneira:
Pacote de encaminhador: é atualizado automaticamente e não é necessário reiniciar.
Imagem do Docker do encaminhador: é atualizada manualmente após interromper o encaminhador existente e iniciar uma nova instância, conforme indicado na Etapa 2.
Instalar o encaminhador por trás de um proxy
Nesta seção, descrevemos como instalar o encaminhador do Chronicle por trás de um proxy.
Configure sua máquina para usar o proxy.
Adicione as seguintes linhas ao seu arquivo
/etc/resolv.conf
:nameserver = 10.0.0.1 nameserver = 10.0.0.2
Configure as variáveis de ambiente a seguir:
$HTTP_PROXY = http://proxy.example.com:80 $HTTPS_PROXY = https://proxy.example.com:80
Configure o Docker para usar o proxy.
Crie um diretório suspenso systemd para o serviço Docker.
mkdir /etc/systemd/system/docker.service.d
Crie um arquivo
/etc/systemd/system/docker.service.d/http-proxy.conf
que adicione as variáveis de ambienteHTTP_PROXY
eHTTPS_PROXY
.[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/" Environment="HTTPS_PROXY=https://proxy.example.com:80/"
Limpe as alterações.
$ sudo systemctl daemon-reload
Verifique se a configuração foi carregada.
$ sudo systemctl show --property Environment docker Environment=HTTP_PROXY=http://proxy.example.com:80/ Environment=HTTPS_PROXY=https://proxy.example.com:80/
Reinicie o Docker.
$ sudo systemctl restart docker
Acesse a imagem mais recente do Docker do encaminhador do Chronicle no Google Cloud.
docker pull gcr.io/chronicle-container/cf_production_stable
Execute o contêiner do encaminhador do Chronicle adicionando variáveis de ambiente do proxy.
docker run \ --env HTTP_PROXY="http://proxy.example.com:80/" \ --env HTTPS_PROXY="https://proxy.example.com:80/" \ --detach \ --name cfps \ --restart=always \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v /opt/chronicle/config:/opt/chronicle/external \ gcr.io/chronicle-container/cf_production_stable
Coleta de dados
As seções a seguir ajudam a configurar o encaminhador do Chronicle para ingerir diferentes tipos de dados, que são encaminhados para a instância do Chronicle.
Coletar dados do Splunk
É possível configurar o encaminhador do Chronicle para encaminhar seus dados do Splunk para o Chronicle. O Google Cloud configura o encaminhador do Chronicle com as seguintes informações para encaminhar seus dados do Splunk:
URL para a API REST do Splunk (por exemplo, https://10.0.113.15:8089).
Consultas de splunk para gerar dados para cada um dos tipos de dados necessários (por exemplo, index=dns).
FORWARDER_NAME.conf output: collectors: - splunk: common: enabled: true data_type: WINDOWS_DNS data_hint: "#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p proto trans_id query qclass qclass_name" batch_n_seconds: 10 batch_n_bytes: 819200 url: https://127.0.0.1:8089 is_ignore_cert: true minimum_window_size: 10s maximum_window_size: 30s query_string: search index=* sourcetype=dns query_mode: realtime
- Disponibilize as credenciais da sua conta do Splunk para o encaminhador
do Chronicle. Para isso, crie um arquivo
creds.txt
.
Para usar um arquivo creds.txt
:
Crie um arquivo local para suas credenciais do Splunk e nomeie-o como
creds.txt
.Coloque seu nome de usuário na primeira linha e a senha na segunda linha:
cat creds.txt myusername mypassword
Para usar o encaminhador do Chronicle para acessar uma instância do Splunk, copie o arquivo
creds.txt
para o diretório de configuração, o mesmo diretório em que os arquivos de configuração residem. Exemplo:cp creds.txt /opt/chronicle/config/creds.txt
Verifique se o arquivo
creds.txt
está no local correto:ls /opt/chronicle/config
Coletar dados syslog
O encaminhador Chronicle pode funcionar como um servidor Syslog. É possível configurar qualquer dispositivo ou servidor compatível com o envio de dados syslog por uma conexão TCP ou UDP para encaminhar os dados ao encaminhador do Chronicle. É possível controlar os dados exatos que o dispositivo ou o servidor envia para o encaminhador do Chronicle. O encaminhador do Chronicle pode encaminhar os dados para ele.
O arquivo de configuração FORWARDER_NAME
.conf (fornecido pelo
Google Cloud) especifica quais portas monitorar para cada tipo de
dados encaminhados (por exemplo, porta 10514). Por padrão, o encaminhador
do Chronicle aceita conexões TCP e UDP.
Configurar o rsyslog
Para configurar o rsyslog, é preciso especificar um destino para cada porta, por exemplo, para cada tipo de dado. Consulte a documentação do sistema para saber a sintaxe correta. Os exemplos a seguir ilustram a configuração de destino do rsyslog:
Tráfego de registros TCP:
dns.* @@192.168.0.12:10514
Tráfego de registros UDP:
dns.* @192.168.0.12:10514
Ativar TLS para configurações de syslog
É possível ativar o TLS para a conexão do Syslog com o encaminhador
do Chronicle. No arquivo de configuração do encaminhador do Chronicle
(FORWARDER_NAME
.conf), especifique o local do certificado
e da chave de certificado gerados, conforme mostrado no exemplo a seguir:
certificado | "/opt/chronicle/external/certs/client_generated_cert.pem" |
certificate_key | "/opt/chronicle/external/certs/client_generated_cert.key" |
Com base no exemplo mostrado, modifique o arquivo de configuração
do encaminhador do Chronicle (FORWARDER_NAME
.conf) da seguinte maneira:
collectors: - syslog: common: enabled: true data_type: WINDOWS_DNS data_hint: batch_n_seconds: 10 batch_n_bytes: 1048576 tcp_address: 0.0.0.0:10515 tcp_buffer_size: 65536 connection_timeout_sec: 60 certificate: "/opt/chronicle/external/certs/client_generated_cert.pem" certificate_key: "/opt/chronicle/external/certs/client_generated_cert.key" minimum_tls_version: "TLSv1_3"
Alguns pontos importantes:
É possível configurar o tamanho do buffer do TCP. O tamanho padrão do buffer do TCP é 64 KB.
O valor padrão e recomendado para connection_timeout é 60 segundos. A conexão TCP é encerrada quando fica inativa por um período especificado.
A versão de TLS mínima é comparada à versão de TLS da solicitação de entrada. A versão de TLS da solicitação de entrada precisa ser maior que a versão de TLS mínima. A versão de TLS mínima precisa ser um destes valores: TLSv1_0, TLSv1_1, TLSv1_2, TLSv1_3.
É possível criar um diretório "certs" no diretório de configuração e armazenar os arquivos de certificado nele.
Coletar dados de arquivos
Um coletor de arquivos foi projetado para buscar os registros de um arquivo. O arquivo precisa estar vinculado ao contêiner do Docker.
Use esse método se quiser fazer o upload manual dos registros de um único arquivo. Isso pode ser usado para preencher registros de um arquivo de registro específico.
Inicie o encaminhador do Chronicle no contêiner do Docker:
docker run \ --name cfps \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v /opt/chronicle/config:/opt/chronicle/external \ -v /var/log/crowdstrike/falconhostclient:/opt/chronicle/edr \ gcr.io/chronicle-container/cf_production_stable
Esse comando "docker run" é essencial para mapear o volume de carregamento para o contêiner.
Com base nesse exemplo, modifique a configuração do encaminhador
do Chronicle (arquivo FORWARDER_NAME.conf
) desta forma.
O arquivo sample.txt
precisa estar na
pasta /var/log/crowdstrike/falconhostclient
.
collectors: - file: common: enabled: true data_type: CS_EDR data_hint: batch_n_seconds: 10 batch_n_bytes: 1048576 file_path: /opt/chronicle/edr/sample.txt filter:
Configurações de sinalização
skip_seek_to_end
(bool): essa sinalização é definida como false
por padrão e a entrada do arquivo envia apenas novas linhas de registro como entrada. Definir como true
faz com que todas as
linhas de registro anteriores sejam enviadas novamente durante as reinicializações do encaminhador. Isso causa duplicação de registros. Definir essa flag como true
é útil em determinadas
situações (por exemplo, durante interrupções), porque a reinicialização do encaminhador envia as
linhas de registro ausentes novamente.
poll
(bool): o coletor de arquivos usa a biblioteca Tail para verificar se há mudanças no
sistema de arquivos. Ao definir essa flag como true
, a biblioteca Tail usa o método
de pesquisa em vez do método de notificação padrão.
Coletar dados de pacotes
O encaminhador do Chronicle pode capturar pacotes diretamente de uma interface de rede usando o libcap no Linux. Para mais informações sobre libcap, consulte a página de manual do Linux (libcap).
Os pacotes são capturados e enviados para o Chronicle em vez de entradas de registro. A captura de pacotes é processada apenas em uma interface local. Para ativar a captura de pacotes no sistema, entre em contato com o suporte do Chronicle.
O Google Cloud configura o encaminhador do Chronicle com a expressão berkeley Packet Filter (BPF) usada ao capturar pacotes (por exemplo, na porta 53 e não no localhost). Para mais informações, consulte Filtros de pacote Berkeley.
Coletar dados do tópico do Kafka
É possível ingerir dados dos tópicos do Kafka da mesma forma que você faz pelo syslog. Os grupos de consumidores são aproveitados para permitir a implantação de até três encaminhadores e a extração de dados do mesmo tópico do Kafka. Para mais informações, consulte o Kafka (em inglês).
Para mais informações sobre grupos de consumidores do Kafka, consulte https://docs.confluent.io/platform/current/clients/consumer.html (em inglês).
Exemplo de configuração: entrada do Kafka
A configuração de encaminhador a seguir mostra como configurá-lo para ingerir dados dos tópicos do Kafka.
O arquivo FORWARDER_NAME.conf
collectors: - kafka: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:NIX_SYSTEM
enabled: true topic: example-topic group_id: chronicle-forwarder timeout: 60s brokers: ["broker-1:9092", "broker-2:9093"] tls: insecureSkipVerify: true certificate: "/path/to/cert.pem" certificate_key: "/path/to/cert.key" - syslog: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:WINEVTLOG
enabled: true tcp_address: 0.0.0.0:30001 connection_timeout_sec: 60
O arquivo FORWARDER_NAME_auth.conf
collectors: - kafka: username: user password: password - syslog:
Coletar dados do WebProxy
O encaminhador do Chronicle pode capturar dados do WebProxy diretamente de uma interface de rede usando o libcap no Linux. Para mais informações sobre libcap, consulte a página de manual do Linux (libcap). Para ativar a captura de dados do WebProxy no seu sistema, entre em contato com o suporte do Chronicle.
Modifique a configuração do encaminhador do Chronicle (arquivo FORWARDER_NAME.conf
)
da seguinte maneira:
- webproxy:
common:
enabled : true
data_type: <Your LogType>
batch_n_seconds: 10
batch_n_bytes: 1048576
interface: any
bpf: tcp and dst port 80
Personalizar configurações
A tabela a seguir lista parâmetros importantes usados no arquivo de configuração do encaminhador.
Parâmetro | Descrição |
---|---|
data_type | O tipo de dados de registro que o coletor pode coletar e processar. |
metadados | Metadados, que substituem metadados globais. |
max_file_buffer_bytes | Número máximo de bytes que podem ser acumulados no disco ou no buffer de arquivo. O valor padrão é 1073741824 , que é 1 GB. |
max_memory_buffer_bytes | Número máximo de bytes que podem ser acumulados no buffer de memória. O
valor padrão é 1073741824 , que é 1 GB. |
write_to_disk_dir_path | O caminho a ser usado para o buffer de arquivo ou disco. |
write_to_disk_buffer_enabled | Se for true , será usado o buffer de disco em vez do buffer de memória. O valor padrão é false .
|
batch_n_bytes | Número máximo de bytes que podem ser acumulados pelo coletor após o qual os dados são agrupados. O valor padrão é 1048576 , que é
1 MB. |
batch_n_seconds | O número de segundos após os quais os dados coletados pelo coletor são agrupados. O valor padrão é 11 segundos. |
data_hint | Formato de dados que o coletor pode receber (geralmente o cabeçalho do arquivo de registros que descreve o formato). |
Para ver uma lista completa de parâmetros usados no arquivo de configuração, consulte Campos de configuração do encaminhador e Campos de configuração do coletor.
Alternar compactação de dados
A compactação de registros reduz o consumo da largura de banda da rede ao transferir registros para o Chronicle. No entanto, a compactação pode aumentar o uso da CPU. A compensação entre o uso da CPU e a largura de banda depende de muitos fatores, incluindo o tipo de dados de registro, a compressibilidade desses dados, a disponibilidade de ciclos de CPU no host que executa o encaminhador e a necessidade de reduzir o consumo da largura de banda da rede.
Por exemplo, registros baseados em texto são bem compactados e podem economizar bastante largura de banda com baixo uso da CPU. No entanto, os payloads criptografados de pacotes brutos não são bem compactados e geram maior uso da CPU.
Por padrão, a compactação de registros fica desativada. Ativar a compactação de registros pode reduzir o consumo da largura de banda. No entanto, ativar a compactação de registros também pode aumentar o uso da CPU. Esteja ciente da troca.
Para ativar a compactação de registros, defina o campo compression como true no arquivo de configuração do encaminhador do Chronicle, conforme mostrado no exemplo a seguir:
O arquivo FORWARDER_NAME.conf
output: compression: true url: malachiteingestion-pa.googleapis.com:443 identity: identity: collector_id: 10479925-878c-11e7-9421-10604b7cb5c1 customer_id: ebdc4bb9-878b-11e7-8455-10604b7cb5c1 ...
O arquivo FORWARDER_NAME_auth.conf
output: identity: secret_key: | { "type": "service_account", ... }
Configurar o armazenamento em buffer do disco
O armazenamento em buffer de disco permite armazenar em buffer as mensagens acumuladas em buffer no disco, e não na memória. As mensagens acumuladas podem ser armazenadas caso o encaminhador falhe ou o host subjacente falhe. A ativação do armazenamento em buffer do disco pode afetar o desempenho.
Se o armazenamento em buffer de disco estiver desativado, o encaminhador usará 1 GB de memória (RAM) para cada tipo de registro (por exemplo, por conector). Especifique o parâmetro de configuração max_memory_buffer_bytes. A memória máxima permitida é de 4 GB.
Configure o armazenamento em buffer automático de memória para usar um buffer compartilhado dinamicamente nos coletores, o que lida melhor com picos de tráfego. Para ativar o buffer compartilhado dinamicamente, adicione o seguinte na configuração do encaminhador:
auto_buffer: enabled: true target_memory_utilization: 80
Se o armazenamento em buffer automático de disco estiver ativado, mas
target_memory_utilization
não estiver definido, ele usará um valor padrão
de 70
.
Se você estiver executando o encaminhador usando o Docker, o Google recomenda montar um volume separado do volume de configuração para fins de isolamento. Além disso, cada entrada precisa ser isolada com o próprio diretório ou volume para evitar conflitos.
Exemplo de configuração: armazenamento em buffer de disco
A configuração a seguir inclui a sintaxe para ativar o armazenamento em buffer do disco:
collectors: - syslog: common: write_to_disk_buffer_enabled: true # /buffers/NIX_SYSTEM
is part of the external mounted volume for the forwarder write_to_disk_dir_path: /buffers/NIX_SYSTEM
max_file_buffer_bytes: 1073741824 batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:NIX_SYSTEM
enabled: true tcp_address: 0.0.0.0:30000 connection_timeout_sec: 60 - syslog: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:WINEVTLOG
enabled: true tcp_address: 0.0.0.0:30001 connection_timeout_sec: 60
Definir filtros de expressão regular
Os filtros de expressão regular permitem filtrar registros com base em correspondências de expressão regular em relação a registros brutos.
Os filtros empregam a sintaxe RE2 descrita aqui: https://github.com/google/re2/wiki/Syntax
Os filtros precisam incluir uma expressão regular e, opcionalmente, definir um comportamento quando há uma correspondência. O comportamento padrão em uma correspondência é bloquear. Também é possível configurá-la explicitamente como bloqueio.
Como alternativa, você pode especificar filtros com o comportamento allow
. Se você especificar algum filtro allow
, o encaminhador bloqueará todos os registros que não correspondam a pelo menos um filtro allow
.
É possível definir um número arbitrário de filtros. Os filtros de bloco têm
prioridade sobre os filtros allow
.
Quando os filtros são definidos, é necessário atribuir um nome a eles. Os nomes dos filtros ativos serão informados ao Chronicle pelas métricas de integridade do encaminhador. Os filtros definidos na raiz da configuração são mesclados com filtros definidos no nível do coletor. Os filtros de nível do coletor têm precedência em casos de nomes conflitantes. Se nenhum filtro for definido no nível da raiz ou do coletor, o comportamento será permitir todos.
Exemplo de configuração: filtros de expressão regular
Na configuração do encaminhador a seguir, os registros WINEVTLOG
que
não correspondem ao filtro raiz (allow_filter
) serão bloqueados. Dada a expressão regular, o filtro só permite registros com prioridades entre 0 e 99.
No entanto, todos os registros NIX_SYSTEM
que contenham "foo" ou "bar" serão bloqueados,
independentemente da allow_filter
. Isso ocorre porque os filtros usam um OR lógico. Todos os registros são processados até que um filtro seja acionado.
regex_filters: allow_filter: regexp: ^<[1-9][0-9]?$>.*$ behavior_on_match: allow collectors: - syslog: common: regex_filters: block_filter_1: regexp: ^.*foo.*$ behavior_on_match: block block_filter_2: regexp: ^.*bar.*$ batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:NIX_SYSTEM
enabled: true tcp_address: 0.0.0.0:30000 connection_timeout_sec: 60 - syslog: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:WINEVTLOG
enabled: true tcp_address: 0.0.0.0:30001 connection_timeout_sec: 60
Configurar rótulos arbitrários
Os identificadores são usados para anexar metadados arbitrários aos registros com pares de chave-valor. Os rótulos podem ser configurados para um encaminhador inteiro ou dentro de um coletor específico de um encaminhador. Se ambos forem fornecidos, os rótulos serão mesclados com as chaves do coletor que têm precedência sobre as chaves do encaminhador, se as chaves se sobrepuserem.
Exemplo de configuração: rótulos arbitrários
Na configuração de encaminhador a seguir, os pares de chave e valor "foo=bar" e "meow=mix" estão anexados aos registros WINEVTLOG
, e os pares de chave e valor "foo=baz" e "meow=mix" são anexados aos registros NIX_SYSTEM
.
metadata: labels: foo: bar meow: mix collectors: syslog: common: metadata: labels: foo: baz meow: mix batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:NIX_SYSTEM
enabled: true tcp_address: 0.0.0.0:30000 connection_timeout_sec: 60 syslog: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:WINEVTLOG
enabled: true tcp_address: 0.0.0.0:30001 connection_timeout_sec: 60
Configurar namespaces
Use rótulos de namespace para identificar registros de segmentos de rede distintos e eliminar o conflito de endereços IP sobrepostos. É possível configurar um rótulo de namespace para um encaminhador inteiro ou dentro de um coletor específico do encaminhador. Se ambos estiverem incluídos, o namespace do coletor específico terá precedência.
Qualquer namespace configurado para o encaminhador aparece com os recursos associados na interface do usuário do Chronicle. Também é possível pesquisar namespaces usando o recurso de pesquisa do Chronicle.
Para informações sobre como visualizar namespaces na interface do usuário do Chronicle, consulte este link.
Exemplo de configuração: namespaces
Na configuração de encaminhador a seguir, os registros WINEVTLOG
são
anexados ao namespace FORWARDER e os registros NIX_SYSTEM
são
anexados ao namespace CORPORATE.
metadata: namespace: FORWARDER collectors: - syslog: common: metadata: namespace: CORPORATE batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:NIX_SYSTEM
enabled: true tcp_address: 0.0.0.0:30000 connection_timeout_sec: 60 - syslog: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:WINEVTLOG
enabled: true tcp_address: 0.0.0.0:30001 connection_timeout_sec: 60
Configurar opções de balanceamento de carga e alta disponibilidade
O encaminhador do Chronicle para Linux pode ser implantado em um ambiente em que um balanceador de carga de camada 4 é instalado entre as instâncias da fonte de dados e do encaminhador. Isso permite que um cliente distribua a coleta de registros em vários encaminhadores ou envie registros para um encaminhador diferente se um deles falhar. Esse recurso é compatível apenas com o tipo de coleção syslog.
O encaminhador do Linux inclui um servidor HTTP integrado que responde às verificações de integridade HTTP do balanceador de carga. O servidor HTTP também ajuda a garantir que os registros não sejam perdidos durante a inicialização ou o encerramento de um encaminhador.
Configure as opções de servidor HTTP, balanceamento de carga e alta disponibilidade na seção server do arquivo de configuração do encaminhador. Essas opções são compatíveis com a definição de durações de tempo limite e códigos de status retornados em resposta a verificações de integridade recebidas em implantações baseadas em orquestração e programador de contêineres, bem como de balanceadores de carga tradicionais.
Use os caminhos de URL a seguir para verificações de integridade, prontidão e atividade.
Os valores <host:port>
são definidos na configuração do encaminhador.
- http://
<host:port>
/meta/available: verificações de atividade para programadores ou orquestradores de contêineres - http://
<host:port>
/meta/ready: de prontidão e verificações de integridade do balanceador de carga tradicional.
A configuração do encaminhador a seguir é um exemplo de balanceamento de carga e alta disponibilidade:
collectors: - syslog: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:NIX_SYSTEM
enabled: true tcp_address: 0.0.0.0:30000 connection_timeout_sec: 60 - syslog: common: batch_n_bytes: 1048576 batch_n_seconds: 10 data_hint: null data_type:WINEVTLOG
enabled: true tcp_address: 0.0.0.0:30001 connection_timeout_sec: 60 server: graceful_timeout: 15s drain_timeout: 10s http: port: 8080 host: 0.0.0.0 read_timeout: 3s read_header_timeout: 3s write_timeout: 3s idle_timeout: 3s routes: - meta: available_status: 204 ready_status: 204 unready_status: 503
Caminho de configuração | Descrição |
---|---|
servidor : Graceful_timeout | O tempo que o encaminhador retorna uma verificação de prontidão/integridade inválida e ainda aceita novas conexões. Esse também é o tempo de espera entre o recebimento de um sinal para interromper e o início do encerramento do próprio servidor. Isso permite que o balanceador de carga tenha tempo para remover o encaminhador do pool. |
servidor : Dren_timeout | O tempo que o encaminhador aguarda até que as conexões ativas se fechem por conta própria antes de serem fechadas pelo servidor. |
servidor : http : porta | O número da porta em que o servidor HTTP detecta verificações de integridade do balanceador de carga. Precisa estar entre 1024 e 65535. |
servidor : http : host | O endereço IP, ou nome do host, que pode ser resolvido em endereços IP, que o servidor precisa detectar. Se estiver vazio, o valor padrão será o sistema local (0.0.0.0). |
servidor : http : read_timeout | Usado para ajustar o servidor HTTP. Normalmente, não precisa ser alterado da configuração padrão. O tempo máximo permitido para ler toda a solicitação, tanto o cabeçalho quanto o corpo. Você pode definir read_timeout e read_header_timeout. |
servidor : http : read_header_timeout | Usado para ajustar o servidor HTTP. Normalmente, não precisa ser alterado da configuração padrão. O tempo máximo permitido para ler os cabeçalhos de solicitação. O prazo de leitura da conexão é redefinido depois da leitura do cabeçalho. |
servidor : http : write_timeout | Usado para ajustar o servidor HTTP. Normalmente, não precisa ser alterado da configuração padrão. O tempo máximo permitido para enviar uma resposta. Ele é redefinido quando um novo cabeçalho de solicitação é lido. |
servidor : http : touchscreen | Usado para ajustar o servidor HTTP. Normalmente, não precisa ser alterado da configuração padrão. A quantidade máxima de tempo de espera pela próxima solicitação quando as conexões inativas estão ativadas. Se o empty_timeout for zero, o valor de read_timeout será usado. Se ambos forem zero, o read_header_timeout será usado. |
rotas : meta : Ready_status | O código de status retornado pelo encaminhador quando está pronto para aceitar o tráfego
em uma das seguintes situações:
|
rotas : meta : não lidas | O código de status que o encaminhador retorna quando não está pronto para aceitar o tráfego. |
rotas : meta : available_status | O código de status retornado quando uma verificação de atividade é recebida e o encaminhador está disponível. Programadores ou orquestradores de contêiner geralmente enviam verificações de atividade. |
Perguntas frequentes
Como atualizo meu encaminhador?
O encaminhador do Linux é constantemente atualizado por meio de um script de shell na imagem Docker. Para atualizar a imagem Docker, execute o encaminhador.
O que é um contêiner do Docker?
Os contêineres do Docker são como máquinas virtuais que oferecem mais segurança, isolamento e gerenciamento de recursos.
Máquinas virtuais: têm um espaço privilegiado (kernel do Linux) e um espaço de usuário (tudo com o qual você interage: libc, python, ls, tcpdump e assim por diante).
Contêineres: têm apenas um espaço de usuário (tudo com que você interage: libc, python, ls, tcpdump e assim por diante) e dependem do espaço de privilégio do host.
Por que distribuir o encaminhador do Chronicle usando um contêiner?
- Melhor segurança com o isolamento:
- O ambiente e os requisitos do cliente não afetam o encaminhamento do Chronicle.
- O ambiente e os requisitos do encaminhador do Chronicle não afetam o cliente.
- Já existe um mecanismo de distribuição de contêiner e pode ser particular e separado para o Google Cloud e os clientes. https://cloud.google.com/container-registry/
Por que só o Linux para contêineres? E o Windows?
Os contêineres foram desenvolvidos primeiro para Linux e estão prontos para produção.
O suporte do Windows para contêineres está em andamento. Os contêineres estão disponíveis para Windows Server 2016 e Windows 10.
Você precisa aprender comandos avançados do Docker?
- Como o encaminhador Chronicle usa um único contêiner, não é necessário aprender sobre o Swarm, a orquestração ou outros conceitos ou comandos avançados do Docker.