Département ELK+Filebead+zookeeper+kafka

Cette expérience est basée sur l'analyse du journal ELK lorsque ELFK a été configuré

Cette expérience est basée sur l'analyse du journal ELK lorsque ELFK a été configuré

Analyse architecturale

La première couche, la couche de collecte de données 
La couche de collecte de données est située sur le cluster de serveurs d'entreprise le plus à gauche. Filebeat est installé sur chaque serveur d'entreprise pour la collecte des journaux, puis les journaux d'origine collectés sont envoyés au cluster Kafka+zookeeper. 

La deuxième couche, la couche de file d'attente des messages 
Une fois le journal d'origine envoyé au cluster Kafka+zookeeper, il sera stocké de manière centralisée. À ce stade, filbeat est le producteur du message et le message stocké peut être consommé à tout moment. 

La troisième couche, la couche d'analyse de données 
Logstash, en tant que consommateur, ira au nœud du cluster Kafka + zookeeper pour extraire le journal d'origine en temps réel, puis analyser, nettoyer et filtrer le journal d'origine obtenu conformément aux règles, et enfin transmettre le journal nettoyé au cluster Elasticsearch. 

La quatrième couche, le stockage persistant des données 
Après avoir reçu les données envoyées par logstash, le cluster Elasticsearch effectue des opérations telles que l'écriture sur disque et la création d'une bibliothèque d'index, et enfin stocke les données structurées sur le cluster Elasticsearch. 

La cinquième couche, requête de données et couche d'affichage 
Kibana est une plate-forme d'affichage de données visuelles. Lorsqu'il y a une demande de récupération de données, il lit les données du cluster Elasticsearch, puis effectue des graphiques visuels et une analyse multidimensionnelle.

Construire ELK + Filebeat + Kafka + Zookeeper

zIP : Cluster : Port : 
192.168.83.11 Elasticsearch+Kibana+kafka+zookeeper+proxy inverse nginx 9100 9200 5601 9092 3288 8080 peut installer filebeat 192.168.83.12 Elasticsearch+ 
Logstash+kafka+zookeeper+filebeat+proxy inverse ngin x 9100 920 0 9600 9092 3288 Aléatoire 8080 
192.168.83.13 Elasticsearch+kafka+zookeeper+proxy inverse nginxz 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:9 092 ÉTABLI 6975/filebeat  

1.3 machines installent zookeeper

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

1.1 Décompressez et installez le progiciel zookeeper

cd /opt 

télécharger le paquet apache-zookeeper-3.8.0-bin.tar.gz 

tar zxf apache-zookeeper-3.8.0-bin.tar.gz décompresser 
mv apache-zookeeper-3.8.0-bin /usr/local/ zookeeper -3.8.0 #Coupez le répertoire décompressé dans /usr/local/ 
cd /usr/local/zookeeper-3.8.0/conf/ 
cp zoo_sample.cfg zoo.cfg Sauvegardez et copiez le fichier de configuration du modèle sous zoo.cfg

1.2 Modifier le fichier de configuration de la configuration Zookeeper

cd /usr/local/zookeeper-3.8.0/conf #Entrez le résumé du fichier de configuration de zookeeper 
ls et vous pouvez voir le fichier de configuration du modèle zoo_sample.cfg 
cp zoo_sample.cfg zoo.cfg Copiez le fichier de configuration du modèle dans zoo.cfg 
mkdir - p /usr /local/zookeeper-3.8.0/data   
mkdir -p dataLogDir=/usr/local/zookeeper-3.8.0/1ogs 
vim zoo.cfg 
# Le nombre de millisecondes de chaque tick 
tickTime=2000 
# Le nombre de ticks que la phase initiale 
de synchronisation peut prendre # 
initLimit=10 
# Le nombre de ticks qui peuvent s'écouler entre 
# l'envoi d'une requête et l'obtention d'un accusé de réception 
syncLimit=5 
# le répertoire où l'instantané est stocké. 
# n'utilisez pas /tmp pour le stockage, / tmp ici est juste 
# exemple sakés.
dataDir=/usr/local/zookeeper-3.8.0/data  
dataLogDir=/usr/local/zookeeper-3.8.0/1ogs 
# le port auquel les clients se connecteront 
clientPort=2181 
# le nombre maximum de connexions client. 
# augmentez cette valeur si vous avez besoin de gérer plus de clients 
#maxClientCnxns=60 
# 
# Assurez-vous de lire la section maintenance du 
# guide de l'administrateur avant d'activer la purge automatique. 
# 
# https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance 
# 
# Le nombre d'instantanés à conserver dans dataDir 
#autopurge.snapRetainCount=3 
# Intervalle de la tâche de purge en heures 
# Définir sur "0" pour désactiver la fonction de purge automatique 
#autopurge.purgeInterval=1 

## Fournisseurs de métriques 
# 
# 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 
serveur.1=192.168.83.11:3188:3288 
serveur.2=192.168.83.12:3188:3288 
serveur.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 Définissez le numéro myid et lancez le script. Ne configurez pas la synchronisation ici. L'opération suivante consiste à configurer une machine et une machine.

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

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

echo 3 sur node2 >/usr/local/ configuré sur zookeeper-3.8.0/data/myid 
#node3

1.4 Deux façons de démarrer zookeeper

cd /usr/local/zookeeper-3.8.0/bin 
ls 
./zkServer.sh start #Démarrez trois serveurs à la fois avant de pouvoir voir l' état. 
/zkServer.sh status #Vérifiez l'état
[root@elk1 bin]# ./zkServer.sh status 
/usr/bin/java 
ZooKeeper JMX activé par défaut 
Utilisation de la configuration : /usr/local/zookeeper-3.8.0/bin/../conf/zoo.cfg 
Port client trouvé : 2181. Adresse client : localhost. Client SSL : faux. 
Mode : follower 

[root@elk2 bin]# ./zkServer.sh status 
/usr/bin/java 
ZooKeeper JMX activé par défaut 
Utilisation de la configuration : /usr/local/zookeeper-3.8.0/bin/../conf/zoo. cfg 
Port client trouvé : 2181. Adresse client : localhost. Client SSL : faux. 
Mode : leader 

[root@elk3 bin]# ./zkServer.sh status 
/usr/bin/java 
ZooKeeper JMX activé par défaut 
Utilisation de la configuration : /usr/local/zookeeper-3.8.0/bin/../conf/zoo. cfg
Port client trouvé : 2181. Adresse client : localhost. Client SSL : faux. 
Mode : suiveur

1.5 Recommandation de démarrage du script

Le deuxième type de 

script qui doit être exécuté pour démarrer 3 nœuds #//configure le script de démarrage, le script crée 
vim 

dans le répertoire où le démarrage est démarré /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 arrêté -----------" 
    $ZK_HOME/bin/zkServer .sh stop 
;; 
restart ) 
    echo "---------- zookeeper restart ------------" 
    $ZK_HOME/bin/zkServer.sh restart 
;; 
*) 
status) 
    echo "---- --- --- statut de gardien de zoo ------------"
    $ZK_HOME/bin/zkServer.sh status
;; 
    echo "Usage : $0 {start|stop|restart|status}" 
esac 
cd /usr/local/zookeeper-3.8.0/bin 
dans l'opération de service du nœud 1 
chmod +x /etc /init.d/zookeeper 
chkconfig --add zookeeper #Ajouter au 
service de gestion du système zookeeper start Démarrer le service 
service zookeeper status Après avoir consulté l'état, il est suivi 
dans l'opération de service du nœud 2 
chmod +x /etc/init.d/zookeeper 
chkconfig --add zookeeper #Rejoindre le 
service de gestion du système zookeeper start Démarrer le service 
service zookeeper status Après avoir vérifié l'état, le leader est le deuxième à démarrer, il est le leader 
dans l'opération de service du nœud 3 
chmod +x /etc/init.d /zookeeper 
chkconfig --add zookeeper #Join Aller au 
service de gestion du système zookeeper start pour démarrer le service 
service zookeeper status Après avoir vu l'état, c'est un suiveur

2. Installer kafka (3 machines doivent fonctionner)

#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 to/opt 
tar zxf kafka_2 .13 -2.7.1.tgz 
mv kafka_2.13-2.7.1 /usr/local/kafka

2.2 Modifier le fichier de configuration

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 Ajouter des commandes pertinentes à l'environnement système

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 
profile 100% 1888 1.4MB/s 00:00     
[root@elk1 config]# scp /etc/profile elk3:/etc/profile 
profile

2.3 Ajouter des commandes pertinentes à l'environnement système

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

2.4 Fonctionnement de la ligne de commande Kafka

Créer un sujet 

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: définir zookeeper cluster Adresse du serveur, s'il y a plusieurs adresses IP séparées par des virgules, utilisez généralement une adresse IP –replication 
-factor : définissez le nombre de copies de partition, 1 représente une copie unique, 2 
est 
recommandé définir le nom du sujet 

afficher tous les sujets du serveur actuel 

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

vérifier les détails d'un sujet 

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

message de libération 

kafka-console-producer.sh --broker-list 192.168.121.10:9092,192.168.121.12 :90 92 192,168 .121.14:9092 - -test de sujet
 
message de consommation de test de sujet

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 : mettra tous les sujets précédents dans le sujet Lire toutes les données et 

modifier le nombre de partitions 

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

le sujet 

kafka-topics.sh 
--delete --zookeeper 192.168.80.10:2181,192.168.80.11:2181,192.168.80.12:2181 --topic test

3. Configurer le filebeat de la couche d'acquisition de données

3.1 Format de journal personnalisé

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

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


événements 
{
    worker_connections 1024 ; 
} 


http 
{ 
    inclure /etc/nginx/mime.types ; 
    default_type application/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":
               "$http_user_agent"' '}' ; 
    access_log /var/log/nginx/access.log json ; 
    envoyer le fichier ; 
    #tcp_nopush activé ; 
    keepalive_timeout 65 ; 
    #gzip activé ; 
    recherche élastique en amont



    { 
        zone elasticsearch 64K ; 
        serveur 192.168.83.11:9200 ;
        serveur 192.168.83.12:9200 ; 
        serveur 192.168.83.13:9200 ; 
    } 
    serveur 
    { 
        écouter 8080 ; 
        nom_serveur localhost ; 
        emplacement / 
        { 
            proxy_pass http://elasticsearch; 
            racine html ; 
            index index.html index.htm; 
        } 
    } 
    inclure /etc/nginx/conf.d/*.conf ; 
}

3.2 installer 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 Modifier le fichier de configuration filebeat.yml

[root@elk2 ~]# vim /etc/filebeat/filebeat.yml 
  activé : vrais 
  chemins : 
    - /var/log/nginx/*.log 
#----------------- --------- Sortie d'Elasticsearch ------------------------------ 
output.kafka : 
  # tableau d'hôtes à se connecter à. 
  hôtes : ["192.168.83.11:9092","192.168.83.12:9092","192.168.83.13:9092"] # 145 
  sujet : "nginx-es"

3.4 démarrer le battement de fichier

[root@elk2 ~]# systemctl redémarre filebeat

4. Une fois tous les composants déployés, démarrez le déploiement de la configuration

4.1 Créer un sujet nginx-es sur 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 Modifier le fichier de configuration de logstash

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

4.3 Page Web d'authentification

Je suppose que tu aimes

Origine blog.csdn.net/m0_67849390/article/details/130192159
conseillé
Classement