ELK+Filebead+zookeeper+kafka Departamento

Este experimento é baseado na análise de log ELK quando o ELFK foi configurado

Este experimento é baseado na análise de log ELK quando o ELFK foi configurado

Análise de arquitetura

A primeira camada, camada de coleta de dados 
A camada de coleta de dados está localizada no cluster de servidores de negócios mais à esquerda.O Filebeat é instalado em cada servidor de negócios para coleta de logs e, em seguida, os logs originais coletados são enviados para o cluster Kafka+zookeeper. 

A segunda camada, camada da fila de mensagens 
Após o log original ser enviado para o cluster Kafka+zookeeper, ele será armazenado centralmente.Neste momento, filbeat é o produtor da mensagem, e a mensagem armazenada pode ser consumida a qualquer momento. 

A terceira camada, camada de análise de dados 
Logstash, como consumidor, irá para o nó do cluster Kafka+zookeeper para extrair o log original em tempo real, depois analisar, limpar e filtrar o log original obtido de acordo com as regras e, finalmente, encaminhar o log limpo para o cluster Elasticsearch. 

A quarta camada, armazenamento persistente de dados.Após 
receber os dados enviados pelo logstash, o cluster Elasticsearch executa operações como gravação em disco e construção de uma biblioteca de índices e, finalmente, armazena os dados estruturados no cluster Elasticsearch. 

A quinta camada, consulta de dados e camada de exibição 
Kibana é uma plataforma de exibição de dados visuais.Quando há uma solicitação de recuperação de dados, ele lê os dados do cluster Elasticsearch e, em seguida, executa gráficos visuais e análises multidimensionais.

Construir ELK+Filebeat+Kafka+Zookeeper

zIP: Cluster: Porta: 
192.168.83.11 Elasticsearch+Kibana+kafka+zookeeper+nginx proxy reverso 9100 9200 5601 9092 3288 8080 pode instalar filebeat 192.168.83.12 
Elasticsearch+Logstash+kafka+zookeeper+filebeat+ngin x proxy reverso 9100 9200 9600 9092 3288 Random 8080 
192.168.83.13 Elasticsearch+kafka+zookeeper+nginx reverse proxyz 9100 9200 9092 3288

root@elk2 ~]# netstat -antp |grep filebeat 
tcp 1 0 192.168.83.12:40348 192.168.83.11:9092 CLOSE_WAIT 6975/filebeat        
tcp 0 0 192.168.83.12:51220 192.168.83.12:90 92 ESTABELECIDO 6975/filebeat  

1.3 máquinas instalam o zookeeper

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz --no-check-certificate

1.1 Descompacte e instale o pacote de software zookeeper

cd /opt 

upload apache-zookeeper-3.8.0-bin.tar.gz pacote 

tar zxf apache-zookeeper-3.8.0-bin.tar.gz descompactar 
mv apache-zookeeper-3.8.0-bin /usr/local/ zookeeper -3.8.0 #Corte o diretório descompactado para /usr/local/ 
cd /usr/local/zookeeper-3.8.0/conf/ 
cp zoo_sample.cfg zoo.cfg Faça backup e copie o arquivo de configuração do modelo como zoo.cfg

1.2 Modifique o arquivo de configuração do Zookeeper

cd /usr/local/zookeeper-3.8.0/conf #Digite o resumo do arquivo de configuração do zookeeper 
ls e você poderá ver o arquivo de configuração do modelo zoo_sample.cfg 
cp zoo_sample.cfg zoo.cfg Copie o arquivo de configuração do modelo para zoo.cfg 
mkdir - p /usr /local/zookeeper-3.8.0/data   
mkdir -p dataLogDir=/usr/local/zookeeper-3.8.0/1ogs 
vim zoo.cfg 
# O número de milissegundos de cada tick 
tickTime=2000 
# O número de ticks que a # fase inicial 
de sincronização pode levar 
initLimit=10 
# O número de tiques que pode passar entre 
# enviar uma solicitação e obter uma confirmação 
syncLimit=5 
# o diretório onde o instantâneo está armazenado. 
# não use /tmp para armazenamento, / tmp aqui é apenas 
# exemplo amores.
dataDir=/usr/local/zookeeper-3.8.0/data  
dataLogDir=/usr/local/zookeeper-3.8.0/1ogs 
# a porta na qual os clientes se conectarão 
clientPort=2181 
# o número máximo de conexões de clientes. 
# aumente se precisar lidar com mais clientes 
#maxClientCnxns=60 
# 
# Certifique-se de ler a seção de manutenção do 
# guia do administrador antes de ativar o autopurge. 
# 
# https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance 
# 
# O número de instantâneos a serem retidos em dataDir 
#autopurge.snapRetainCount=3 
# Intervalo da tarefa de limpeza em horas 
# Defina como "0" para desativar o recurso de limpeza automática 
#autopurge.purgeInterval=1 

## Provedores de Métricas 
# 
# https://prometheus.io Metrics Exporter 
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider 
#metricsProvider.httpHost=0.0.0.0 
#metricsProvider.httpPort=7000 
#metricsProvider.exportJvmInfo=true 
server.1=192.168.83.11:3188:3288 
server.2=192.168.83.12:3188:3288 
server.3=192.168.83.13:3188:3288
scp zoo.cfg elk2:/usr/local/zookeeper-3.8.0/conf/zoo.cfg   
scp zoo.cfg elk3:/usr/local/zookeeper-3.8.0/conf/zoo.cfg

1.3 Defina o número myid e inicie o script. Não configure a sincronização aqui. A seguinte operação é para configurar uma máquina e uma máquina.

echo 1 >/usr/local/zookeeper-3.8.0/data/myid 
# configure 

echo 2 no node1 >/usr/local/zookeeper-3.8.0/data/myid 
# configure 

echo 3 no node2 >/usr/local/ configurado em zookeeper-3.8.0/data/myid 
#node3

1.4 Duas maneiras de iniciar o zookeeper

cd /usr/local/zookeeper-3.8.0/bin 
ls 
./zkServer.sh start #Inicie três servidores por vez antes de poder ver o 
status./zkServer.sh status #Verifique o status
[root@elk1 bin]# ./zkServer.sh status 
/usr/bin/java 
ZooKeeper JMX ativado por padrão 
Usando a configuração: /usr/local/zookeeper-3.8.0/bin/../conf/zoo.cfg 
Porta do cliente encontrado: 2181. Endereço do cliente: localhost. SSL do cliente: falso. 
Modo: seguidor 

[root@elk2 bin]# ./zkServer.sh status 
/usr/bin/java 
ZooKeeper JMX ativado por padrão 
Usando a configuração: /usr/local/zookeeper-3.8.0/bin/../conf/zoo. cfg 
Porta do cliente encontrada: 2181. Endereço do cliente: localhost. SSL do cliente: falso. 
Modo: líder 

[root@elk3 bin]# ./zkServer.sh status 
/usr/bin/java 
ZooKeeper JMX habilitado por padrão 
Usando a configuração: /usr/local/zookeeper-3.8.0/bin/../conf/zoo. cfg
Porta do cliente encontrada: 2181. Endereço do cliente: localhost. SSL do cliente: falso. 
Modo: seguidor

1.5 Recomendação de inicialização do script

O segundo tipo de 

script que precisa ser executado para iniciar 3 nós #//Configure o script de inicialização, o script cria 
o vim 

no diretório onde a inicialização é iniciada /etc/init.d/zookeeper 
#!/bin/bash 
#chkconfig :2345 20 90 
#description :Zookeeper Service Control Script 
ZK_HOME='/usr/local/zookeeper-3.8.0' 
case $1 in 
start) 
    echo "----------zookeeper start------ ----" 
    $ ZK_HOME/bin/zkServer.sh start 
;; 
stop) 
    echo "---------- zookeeper parou -----------" 
    $ZK_HOME/bin/zkServer .sh stop 
;; 
restart ) 
    echo "---------- zookeeper restart ---------" 
    $ZK_HOME/bin/zkServer.sh restart 
;; 
status) 
    echo "---- --- --- status de zelador -------------"
    $ZK_HOME/bin/zkServer.sh status 
;; 
*)
    echo "Uso: $0 {start|stop|restart|status}" 
esac 
cd /usr/local/zookeeper-3.8.0/bin 
no nó 1 operação de serviço 
chmod +x /etc/init.d/zookeeper 
chkconfig --add zookeeper #Adicionar ao 
serviço de gerenciamento do sistema zookeeper start start 
service zookeeper status Depois de verificar o status, o seguidor está 
operando no nó 2 service 
chmod +x /etc/init.d/zookeeper 
chkconfig --add zookeeper #Adicionar ao 
serviço de gerenciamento do sistema zookeeper start start service 
service Status do Zookeeper Depois de visualizar o status, é o líder que inicia o segundo, é o líder que 
opera o serviço no nó 3. 
chmod +x /etc/init.d/zookeeper 
chkconfig --add zookeeper #Add para o 
início do zookeeper do serviço de gerenciamento do sistema Iniciar o 
status do zookeeper do serviço de serviço Seguidor após visualizar o status

2. Instale o kafka (3 máquinas devem ser operadas)

#downloadkafka 
cd /opt 
wget http://archive.apache.org/dist/kafka/2.7.1/kafka_2.13-2.7.1.tgz 
uploadkafka_2.13-2.7.1.tgz para/opt 
tar zxf kafka_2 .13 -2.7.1.tgz 
mv kafka_2.13-2.7.1 /usr/local/kafka

2.2 Modifique o arquivo de configuração

cd /usr/local/kafka/config/ 
cp server.properties server.properties.bak 
vim server.properties 

192.168.83.11配置
broker.id=1 
listeners=PLAINTEXT://192.168.83.11:9092 
zookeeper.connect=192.168.83.11 :2181,192.168.83.12:2181,192.168.83.13:2181 
192.168.83.13配置
broker.id=2 
listeners=PLAINTEXT://192.168.83.12:9092 
zookeeper.connect=192.168.83.11:2181,192 .168.83.12:2181, 192.168.83.13:21810:2181 

192.168.83.13配置
broker.id=3 
listeners=PLAINTEXT://192.168.83.13:9092 
zookeeper.connect=192.168.83.11:2181,192.168.83.12:2181,19 2.168.83.13:2181

2.3 Adicionar comandos relevantes ao ambiente do sistema

vim /etc/profile 末行加入
export KAFKA_HOME=/usr/local/kafka 
export PATH=$PATH:$KAFKA_HOME/bin 
source /etc/profile 
[root@elk1 config]# scp /etc/profile elk2:/etc/profile 
perfil 100% 1888 1,4 MB/s 00:00     
[root@elk1 config]# scp /etc/profile elk3:/etc/profile 
perfil

2.3 Adicionar comandos relevantes ao ambiente do sistema

cd /usr/local/kafka/config/ 
kafka-server-start.sh -daemon server.properties 
netstat -antp | grep 9092

2.4 Operação de linha de comando do Kafka

Criar tópico 

kafka-topics.sh --create --zookeeper 192.168.121.10:2181,192.168.121.12:2181,192.168.121.14:2181 --replication-factor 2 --partitions 3 --topic test 
--zookeeper: definir zookeeper cluster Endereço do servidor, se houver vários endereços IP separados por vírgulas, geralmente use um IP –fator de replicação 
: defina o número de cópias da partição, 1 representa uma única cópia, 2 é recomendado 
–partitions: defina o número de partições 
–tópico: definir a exibição do nome do tópico 

Todos os tópicos no servidor atual 

kafka-topics.sh --list --zookeeper 192.168.121.10:2181,192.168.121.12:2181,192.168.121.14:2181 

Verificar os detalhes de um tópico 

kafka-topics.sh --describe -- zookeeper 192.168.121.10:2181,192.168.121.12:2181,192.168.121.14:2181 

mensagem de liberação 

kafka-console-producer.sh --broker-list 192.168.121.10:9092,192.168.121.12 :9 092.192.168 .121.14:9092 - -teste de tópico
 
-mensagem de consumo de teste de tópico

kafka-console-consumer.sh --bootstrap-server 192.168.121.10:9092,192.168.121.12:9092,192.168.121.14:9092 --topic test --from-beginning 

--from-beginning: Colocará todos os tópicos anteriores no tópico Leia todos os dados e 

modifique o número de partições 

kafka-topics.sh 
--zookeeper 192.168.80.10:2181,192.168.80.11:2181,192.168.80.12:2181 --alter --topic test --partitions 6Excluir 

tópico 

kafka-topics. sh 
--delete --zookeeper 192.168.80.10:2181,192.168.80.11:2181,192.168.80.12:2181 --teste de tópico

3. Configure o filebeat da camada de aquisição de dados

3.1 Formato de registro personalizado

3.1 定制日志格式
[root@elk2 ~]# vim /etc/nginx/nginx.conf 
user nginx; 
worker_processes automático; 

error_log /var/log/nginx/error.log aviso; 
pid /var/run/nginx.pid; 


eventos 
{ 
    worker_connections 1024; 
} 


http 
{ 
    include /etc/nginx/mime.types; 
    aplicativo default_type/octet-stream; 

# log_format main2 '$http_host $remote_addr - $remote_user [$time_local] "$request" ' 
# '$status $body_bytes_sent "$http_referer" ' 
# '"$http_user_agent" "$upstream_addr" $request_time'; 
# access_log /var/log/nginx/access.log main2; 
     log_format json '{"@timestamp":
    #gzip ativado; 
    pesquisa elástica upstream
                           '"url":"$uri",' 
                           '"status":"$status",' ' 
                           "domain":"$host",' 
                           '"host":"$server_addr",' 
                           '"size":$ body_bytes_sent,' 
                           '"responsetime":$request_time,' 
                           '"referer": "$http_referer",' 
                           '"ua": "$http_user_agent"' 
               '}'; 

    access_log /var/log/nginx/access. registro json; 
    enviar arquivo em; 
    #tcp_nopush ativado; 

    keepalive_timeout 65; 

    { 
        zona elasticsearch 64K; 
        servidor 192.168.83.11:9200;
        servidor 192.168.83.12:9200; 
        servidor 192.168.83.13:9200; 
    } 
    servidor 
    { 
        escuta 8080; 
        host local nome_do_servidor; 
        localização / 
        { 
            proxy_pass http://elasticsearch; 
            html raiz; 
            index index.html index.htm; 
        } 
    } 
    include /etc/nginx/conf.d/*.conf; 
}

3.2 instalar filebeat

[root@elk2 ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.0.0-x86_64.rpm 
[root@elk2 ~]# rpm -ivh filebeat-6.0.0-x86_64 .rpm

3.3 Modifique o arquivo de configuração filebeat.yml

[root@elk2 ~]# vim /etc/filebeat/filebeat.yml 
  habilitado: true 
  paths: 
    - /var/log/nginx/*.log 
#----------------- --------- Saída do Elasticsearch ------------------------------ 
output.kafka: 
  # Matriz de hosts para conectar a. 
  hosts: ["192.168.83.11:9092","192.168.83.12:9092","192.168.83.13:9092"] #145 
  tópico: "nginx-es"

3.4 iniciar batida de arquivo

[root@elk2 ~]# systemctl reinicie filebeat

4. Após a implantação de todos os componentes, inicie a implantação da configuração

4.1 Criar um tópico nginx-es no kafka

kafka-topics.sh --create --zookeeper 192.168.83.11:2181,192.168.83.12:2181,192.168.83.13:2181 --replication-factor 1 --partitions 1 --topic nginx-es

4.2 Modifique o arquivo de configuração do logstash

[root@elk2 ~]# vim /etc/logstash/conf.d/nginxlog.conf 
input{ 
kafka{ 
    topics=>"nginx-es" 
    codec=>"json" 
    decorar_events=>true 
    bootstrap_servers=>"192.168.83.11: 9092,192.168.83.12:9092,192.168.83.13:9092" 
    } 
} 
output { 
    elasticsearch { 
         hosts=>["192.168.83.11:9200","192.168.83.12:9200","192.168.83.13:9200"] 
         index= >'nginx-log-%{+AAAA-MM-dd}' 
         } 
}
重启logstash 
systemctl restart logstash

4.3 Página web de autenticação

Acho que você gosta

Origin blog.csdn.net/m0_67849390/article/details/130192159
Recomendado
Clasificación