本文共 4678 字,大约阅读时间需要 15 分钟。
ELK日志搜集平台由以下四个主要组件组成:
Elasticsearch
基于Lucene的开源分布式搜索引擎,专注于日志的存储与搜索。其特点包括分布式架构、零配置、自动发现、索引分片及副本机制等。Logstash
开源日志收集、处理与传输工具。Logstash通过简单的管道方式(input → filter → output)实现日志的实时采集与转换,支持多种输入和输出插件。Kibana
基于浏览器的开源日志可视化工具,为Elasticsearch提供友好的前端界面,便于数据分析与展示。Kafka
分布式、多副本的消息队列系统,用于高吞吐量、可扩展性的日志传输与处理。| 软件名称 | 主机名 | IP地址 | 系统版本 |
|---|---|---|---|
| Elasticsearch | ela1 | 192.168.195.128 | CentOS7.4 |
| Logstash | ela2 | 192.168.195.129 | CentOS7.4 |
| Kafka | ela3 | 192.168.195.130 | CentOS7.4 |
所有节点需关闭防火墙及SELinux。
为每个节点创建一个名为ela的非管理员用户。
useradd ela
将各组件解压至/usr/local目录下。
tar -xf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/
为Elasticsearch目录设置适当权限。
chown -R ela.ela /usr/local/elasticsearch-7.10.0/
设置内核参数以支持大规模数据处理。
sysctl -w vm.max_map_count=262144 > /etc/sysctl.confsysctl -p
修改文件描述符限制。
echo 'soft nofile 65536' >> /etc/security/limits.confecho 'hard nofile 131072' >> /etc/security/limits.conf
在每个节点的elasticsearch.yml中添加以下配置:
cluster.name: elknode.name: ela1/ela2/ela3node.data: truenetwork.host: 0.0.0.0http.port: 9200discovery.seed_hosts: - "192.168.195.129", "192.168.195.128", "192.168.195.130"cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]
在每个节点上以ela用户运行:
su - elacd /usr/local/elasticsearch-7.10.0/bin/bin/elasticsearch -d -p /tmp/elasticsearch.pid
通过curl命令查看集群健康状况:
curl -X GET "localhost:9200/_cat/health?v"
安装Java Development Kit 8。
tar -xf /usr/local/jdk-8u121-linux-x64.tar.gz -C /usr/local/
在zookeeper.properties中配置:
dataDir=/opt/data/zookeeper/datadataLogDir=/opt/data/zookeeper/logsclientPort=2181tickTime=2000initLimit=20syncLimit=10server.1=192.168.195.128:2888:3888server.2=192.168.195.129:2888:3888server.3=192.168.195.130:2888:3888
创建必要目录并设置myid文件。
mkdir -p /opt/data/zookeeper/{data,logs}echo 1 > /opt/data/zookeeper/data/myid 在server.properties中添加以下配置:
broker.id=1/2/3listeners=PLAINTEXT://192.168.195.128:9092num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/opt/data/kafka/logsnum.partitions=6num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=2transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=536870912log.retention.check.interval.ms=300000zookeeper.connect=192.168.195.128:2181,192.168.195.129:2181,192.168.195.130:2181zookeeper.connection.timeout.ms=6000group.initial.rebalance.delay.ms=0
创建日志目录:
mkdir -p /opt/data/kafka/logs
在每个节点上运行:
cd /usr/local/kafka_2.11-2.1.0/bin/nohup kafka-server-start.sh config/server.properties &
创建主题并测试消息传输。
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testtopicbin/kafka-console-producer.sh --broker-list 192.168.195.128:9092 --topic testtopic > /dev/nullbin/kafka-console-consumer.sh --bootstrap-server 192.168.195.128:9092 --topic testtopic --from-beginning
解压并安装Logstash。
tar -xf logstash-7.10.0-linux-x86_64.tar.gz -C /usr/local/
在input.conf中添加:
input { kafka { type: "nginx_log" codec: "json" topics: "nginx" decorate_events: true bootstrap_servers: "192.168.195.128:9092, 192.168.195.129:9092, 192.168.195.130:9092" }}output { elasticsearch { hosts: ["192.168.195.128:9200", "192.168.195.129:9200", "192.168.195.130:9200"] }} 启动Logstash:
cd /usr/local/logstash-6.5.4/bin/nohup bin/logstash -f etc/conf.d/ --config.reload.automatic &
解压并安装Filebeat。
tar -xf filebeat-7.10.1-linux-x86_64.tar.gz -C /usr/local/
在filebeat.yml中添加:
filebeat.inputs: - type: log enabled: true paths: - /var/log/access.log - /var/log/error.logoutput: console: pretty: true# 去除以下配置(根据实际需求保留)# output.elasticsearch:# hosts: ["localhost:9200"]
启动Filebeat:
cd /usr/local/filebeat-7.10.1-linux-x86_64/bin/./filebeat
解压并创建符号链接。
tar -xf kibana-7.10.1-linux-x86_64.tar.gz -C /usr/local/ln -s /usr/local/kibana-7.10.1-linux-x86_64 /usr/local/kibana
在kibana.yml中添加:
server.port: 5601server.host: "0.0.0.0"elasticsearch.hosts: ["http://localhost:9200"]logging.dest: /var/log/kibana/kibana.logi18n.locale: "zh-CN"
创建用户并设置权限。
useradd elamkdir -p /var/run/kibana /var/log/kibanachown ela.ela -R /var/run/kibana /var/log/kibana
启动Kibana。
cd /usr/local/kibana/bin/nohup kibana &
通过浏览器访问Kibana界面:http://192.168.195.128:5601
完成以上步骤后,可通过Kibana进行日志查询与可视化分析。
转载地址:http://vejg.baihongyu.com/