Documentation de déploiement elk8.0 (rsyslog+kafka+logstash+elasticsearch+kibana))

Table des matières

Version du composant :

déploiement de recherche élastique

département de Kafka

déploiement de logstash

département de Kibana


Récemment, j'ai besoin de collecter les journaux système Linux, et la nouvelle version de rsyslog prend également en charge le crachage directement vers kafka, je prévois donc d'utiliser rsyslog plus un cluster elk traditionnel. Le plan d'architecture général est le suivant :

J'ai d'abord pensé à utiliser filebeat, mais j'ai ensuite pensé que l'ajout d'un agent augmenterait en fait les facteurs incontrôlables. Si j'utilise directement le rsyslog fourni avec le système, le client n'a qu'à configurer une ligne d'adresse du serveur, et cela peut être transmis via UDP. L'efficacité des données est également élevée.

Version du composant :

elasticsearch 8.0.0logstash 8.0.0kibanna 8.0.0rsyslog 8.24.0kafka 3.2.0

Toutes les nouvelles versions sont adoptées. Avec cette version de kafka, il n'est pas nécessaire de déployer zookeeper séparément.

Parmi eux, es logstash kafka est déployé à l'aide du package rpm.

Chemin d'acquisition du package :

eshttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.0.0-x86_64.rpmlogstashhttps://artifacts.elastic.co/downloads/logstash/logstash-8.0.0-x86_64.rpmkibanahttps://artifacts.elastic.co/downloads/kibana/kibana-8.0.0-x86_64.rpmkafkahttps://www.apache.org/dyn/closer.cgi?path=/kafka/3.2.0/kafka_2.12-3.2.0.tgz

déploiement de recherche élastique

Installez-le d'abord sur le premier

tr/min -ivh elasticsearch-8.0.0-x86_64.rpm

Le déploiement actuel 8.0 permettra directement l'authentification, et les clés pertinentes seront également dans le résultat :

Vous pouvez voir que le jeton de Kibana sera également généré, mais il a une limite de temps et doit être ajusté.

✅ Elasticsearch security features have been automatically configured!✅ Authentication is enabled and cluster connections are encrypted.

ℹ️  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):密钥

ℹ️  HTTP CA certificate SHA-256 fingerprint:  9da4a430e857626b3e126a4bdf32724560bb0c51f093ef29232703ce43712548

ℹ️  Configure Kibana to use this cluster:• Run Kibana and click the configuration link in the terminal when Kibana starts.• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):  eyJ2ZXIiOiI4LjAuMSIsImFkciI6WyIxMC4xMTMuMjIuMTY1OjkyMDEiXSwiZmdyIjoiOWRhNGE0MzBlODU3NjI2YjNlMTI2YTRiZGYzMjcyNDU2MGJiMGM1MWYwOTNlZjI5MjMyNzAzY2U0MzcxMjU0OCIsImtleSI6Ik9OR21UbjhCcnVQeTczamd4S3FtOkkwS1ZTV1VmUmNpYXpLQzFTMG1TV2cifQ==

ℹ️ Configure other nodes to join this cluster:• Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):  eyJ2ZXIiOiI4LjAuMSIsImFkciI6WyIxMC4xMTMuMjIuMTY1OjkyMDEiXSwiZmdyIjoiOWRhNGE0MzBlODU3NjI2YjNlMTI2YTRiZGYzMjcyNDU2MGJiMGM1MWYwOTNlZjI5MjMyNzAzY2U0MzcxMjU0OCIsImtleSI6Ik45R21UbjhCcnVQeTczamd4S3FsOkZjcVZCNFF5VHVhcFZVUmFUVHBLS2cifQ==

  If you're running in Docker, copy the enrollment token and run:  `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.0.1`

Ce qu'il faut noter ici, c'est que si vous déployez la deuxième ou la troisième unité, vous devez rejoindre le cluster.

La première étape est encore

rpm -ivh elasticsearch-8.0.0-x86_64.rpm/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token  加上述token最后的话,就是配置文件了,其实要注意,有些是会自动生成的,自己配的话,有时候会重复elasticsearch.ymlcluster.name: esnode.name: node-1path.data: /data/elasticsearch/datapath.logs: /data/elasticsearch/logsnetwork.host: 0.0.0.0discovery.seed_hosts: ["ip1","ip2", "ip3"]cluster.initial_master_nodes: ["node-1"]xpack.security.enabled: truexpack.security.enrollment.enabled: truexpack.security.http.ssl:  enabled: true  keystore.path: certs/http.p12xpack.security.transport.ssl:  enabled: true  verification_mode: certificate  keystore.path: certs/transport.p12  truststore.path: certs/transport.p12http.host: [_local_, _site_]
 
 

Pour commencer, il vous faut

systemctl daemon-reloadsystemctl start elasticsearch

département de Kafka

Déploiement du package tar, décompressez les trois machines séparément, puis modifiez la configuration

tar -xvfvim /data/kafka/config/server.propertiesbroker.id=0 #需要修改num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/data/kafka/kafka-logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000zookeeper.connect=ip1:2181,ip2:2181,ip3:2181 #需要配置zookeeper.connection.timeout.ms=18000group.initial.rebalance.delay.ms=0

#démarrer
kafka-server-start.sh -daemon ../config/server.properties

Commandes associées

查看topic/data/kafka/bin/kafka-topics.sh --list --bootstrap-server ip1:9092查看group/data/kafka/bin/kafka-consumer-groups.sh --list  --bootstrap-server ip:9092

déploiement de logstash

Même déploiement RPM

rpm -ivh logstash-8.0.0-x86_64.rpm

Modifier le fichier de configuration
vim /etc/logsgtash/conf.d/test.conf

input {
   
     kafka {
   
           codec => "json"        group_id => "logs"        topics => ["system_logs"]        bootstrap_servers => "ip1:9092,ip2:9092,ip3:9092"        auto_offset_reset => "latest"  } }  output {
   
     elasticsearch {
   
       hosts => ["https://ip1:9200"]    index => "sys-log-%{+YYYY.MM.dd}"    user => "elastic"    password => "passwd"    cacert => '/etc/logstash/http_ca.crt'  }}

#Notez que s'il s'agit d'un fichier de clé https, il est copié depuis es.

département de Kibana

Déployez simplement le RPM directement. Puis après avoir ouvert la page Web, remplissez la valeur du jeton ci-dessus. S'il expire, régénérez-le.

 
 
rpm -ivh kibana-8.0.0-x86_64.rpm

Après avoir démarré tout ce qui précède, configurez la configuration du serveur rsyslog.

Il y a principalement deux fichiers de configuration qui doivent être modifiés.

/etc/rsyslog.conf

#添加如下几行,另外需要在服务端部署 yum install rsyslog-kafkamodule(load="omkafka")module(load="imudp")input(type="imudp" port="514" ruleset="tokafka")*.* @ip:514 #服务端ip


/etc/ryslog.d/system.conf
 

#这个配置是将系统日志json化template(name="json" type="list" option.json="on") {
   
      constant(value="{")      constant(value="\"timestamp\":\"")      property(name="timereported" dateFormat="rfc3339")      constant(value="\",\"host\":\"")      property(name="hostname")      constant(value="\",\"facility\":\"")      property(name="syslogfacility-text")      constant(value="\",\"severity\":\"")      property(name="syslogseverity-text")      constant(value="\",\"syslog-tag\":\"")      property(name="syslogtag")      constant(value="\",\"message\":\"")      property(name="msg" position.from="2")   constant(value="\"}")}ruleset(name="tokafka") {
   
     action(    type="omkafka"    broker="ip1:9092,ip3:9092,ip2:9092"    confParam=["compression.codec=snappy", "socket.keepalive.enable=true"]    topic="system_logs"    partitions.auto="on"    template="json"    queue.workerThreads="4"    queue.size="360000"    queue.dequeueBatchSize="100"  )}

Bon, tout est fait, redémarrez le service rsyslog, attendez que les logs soient ajoutés et configurez l'index dans Kibana.

Je suppose que tu aimes

Origine blog.csdn.net/smallbird108/article/details/125466746
conseillé
Classement