ELK 分布式日志实战-6.4.0
一. ELK 分布式日志实战介绍
此实战方案以 Elk 6.4.0版本为准,分布式日志将以下图分布进行安装部署以及配置。
当Elk需监控应用日志时,需在应用部署所在的服务器中,安装Filebeat日志采集工具,日志采集工具通过配置,采集本地日志文件,将日志消息传输到Kafka集群,
我们可部署日志中间服务器,安装Logstash日志采集工具,Logstash直接消费Kafka的日志消息,并将日志数据推送到Elasticsearch中,并且通过Kibana对日志数据进行展示。
二、ELK安装部署开始
大家安装部署之前,可先参考官方文档进行部署。(官方参考文档地址可点击一下超链接)
注:Elasticsearch 6.4.0 默认安装了x-pack 安全插件,该插件授权 30天试用。(如过期,则自行选择购买,或者破解,本方案不提供破解方案)
Elasticsearch 6.4.0 Kibana 6.4.0 Logstash 6.4.0 Filebeat 6.4.0
1、安装 Elasticsearch
1.1、下载安装Elasticsearch 6.4.0
1 2 3 4 5 6 7 | wget https: //artifacts .elastic.co /downloads/elasticsearch/elasticsearch-6 .4.0. tar .gz wget https: //artifacts .elastic.co /downloads/elasticsearch/elasticsearch-6 .4.0. tar .gz.sha512 # 当shasum命令不存在时,可执行命令安装 yum install perl-Digest-SHA shasum -a 512 -c elasticsearch-6.4.0. tar .gz.sha512 tar -xzf elasticsearch-6.4.0. tar .gz cd elasticsearch-6.4.0/ |
2.1、配置Elasticsearch 集群
2.1.1 配置服务器hosts
由于模拟生产环境,提升计算能力,跨主机集群配置为优选
#1.
配置集群之前先配置每台节点主机
hosts,
下图以测试环境为例:
配置
es-node1
和
es-node2
两台主机名称,
es-node1
为本机主机
,如若增加主机节点,可配置
es-node3 …,elasticsearch
可配置上千节点作为集群服务节点
1 2 3 4 5 | vi /etc/hosts 10.240.37.56 es-node1 10.240.37.57 es-node2 10.240.37.58 es-node3 |
2.1.2 配置Elasticsearch
A.配置
es-node1
节点集群配置,如下配置 node.master:true 表示为主节点,node.data:true 表示主节点也作为数据节点
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@10-240-37-56 elasticsearch-6.4.0] # grep ^[a-z] config/elasticsearch.yml cluster.name: my_es_cluster node.name: es-node1 path.data: /data/elk/data/ path.logs: /data/elk/logs network.host: 0.0.0.0 http.port: 9200 transport.tcp.port: 9300 discovery.zen. ping .unicast.hosts: [ "10.240.37.56" , "10.240.37.57" ] http.cors.enabled: true http.cors.allow-origin: "*" node.master: true node.data: true |
B.配置
es-node2
节点集群配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@10-240-37-57 elasticsearch-6.4.0] # grep ^[a-z] config/elasticsearch.yml cluster.name: my_es_cluster node.name: es-node2 path.data: /data/elk/data path.logs: /data/elk/logs network.host: 0.0.0.0 transport.tcp.port: 9300 transport.tcp.compress: true http.port: 9200 discovery.zen. ping .unicast.hosts: [ "10.240.37.56" , "10.240.37.57" ] http.cors.enabled: true http.cors.allow-origin: "*" node.master: false node.data: true |
C.配置
es-node3
节点集群配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@10-240-37-58 elasticsearch-6.4.0] # grep ^[a-z] config/elasticsearch.yml cluster.name: my_es_cluster node.name: es-node3 path.data: /data/elk/data path.logs: /data/elk/logs network.host: 0.0.0.0 transport.tcp.port: 9300 transport.tcp.compress: true http.port: 9200 discovery.zen. ping .unicast.hosts: [ "10.240.37.56" , "10.240.37.57" , "10.240.37.58" ] http.cors.enabled: true http.cors.allow-origin: "*" node.master: false node.data: true |
2.1.3 启动elasticsearch
A.启动
elasticsearch
服务之前,需先配置
es
用户组和
es
用户(由于
es
安全因素)
1 | [root@10-240-37-58 app] # groupadd es #增加es组[root@10-240-37-58 app]# useradd es -g es -p pwd #增加es用户并附加到es组<br>[root@10-240-37-58 app]# chown -R es:es elasticsearch-6.4.0 #分配es目录访问权限<br>[root@10-240-37-58 app]#chown -R es:es /data/elk/[root@10-240-37-58 app]# su es #切换es用户<br>[es@10-240-37-58 app]$ ./elasticsearch-6.4.0/bin/elasticsearch & 启动命令 |
C.第一次启动将遇到问题
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
#切换到root用户修改 vi /etc/security/limits.conf #在最后面追加 es hard nofile 65536 es soft nofile 65536 #修改后重新登录es账号,使用命令查看上面设置是否成功,结果为65536则成功 ulimit -Hn
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#切换到root用户 vi /etc/sysctl.conf #在最后追加 vm.max_map_count=262144 #使用 sysctl -p 查看修改结果 sysctl -p
[3]、system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
1 2 3 4 5 6 | 原因: 这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为 true 进行检测,所以导致检测失败,失败后直接导致ES不能启动。 解决: 在elasticsearch.yml中配置bootstrap.system_call_filter为 false ,注意要在Memory下面: bootstrap.memory_lock: false bootstrap.system_call_filter: false |
实例配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@10-240-37-58 bin] # grep ^[a-z] ../config/elasticsearch.yml cluster.name: my_es_cluster node.name: es-node3 path.data: /data/elk/data path.logs: /data/elk/logs bootstrap.memory_lock: false bootstrap.system_call_filter: false network.host: 0.0.0.0 transport.tcp.port: 9300 transport.tcp.compress: true http.port: 9200 discovery.zen. ping .unicast.hosts: [ "10.240.37.56" , "10.240.37.57" , "10.240.37.58" ] http.cors.enabled: true http.cors.allow-origin: "*" node.master: false node.data: true |
D.解决以上问题,则先启动 数据节点,最后启动主节点
cd /data/ops/app/elasticsearch-6.4.0 ./bin/elasticsearch
F.当所有节点启动成功后,在主节点服务器执行以下curl命令,如下图所示,标识Elasticsearch集群启动成功。
1 2 3 4 5 6 7 | [root@10-240-37-56 ~] # curl http://10.240.37.56:9200/_nodes/process?pretty { "_nodes" : { "total" : 3, "successful" : 3, "failed" : 0 }, |
2、安装 Kibana
2.1 下载安装Kibana
1 2 3 4 | wget https: //artifacts .elastic.co /downloads/kibana/kibana-6 .4.0-linux-x86_64. tar .gz tar -xzf kibana-6.4.0-linux-x86_64. tar .gz mv kibana-6.4.0-linux-x86_64/ kibana-6.4.0 cd kibana-6.4.0/ |
2.2 配置kibana
1 2 | vim config /kibana .yml server.host: "10.240.37.56" |
2.3 启动kibana
1 | /data/ops/app/kibana-6 .4.0-linux-x86_64 /bin/kibana & |
2.4 访问kibana,如下图所示,表示启动成功
1 | http: //10 .240.37.56:5601 /app/kibana |
3、安装 Logstash 与 Filebeat
3.1 下载安装Logstash和Filebeat
1 2 3 4 5 6 7 8 9 10 11 12 | # Logstash wget https: //artifacts .elastic.co /downloads/logstash/logstash-6 .4.0. tar .gz tar -xzf logstash-6.4.0. tar .gz cd logstash-6.4.0 # Filebeat wget https: //artifacts .elastic.co /downloads/beats/filebeat/filebeat-6 .4.0-linux-x86_64. tar .gz tar -xzf filebeat-6.4.0-linux-x86_64. tar .gz mv filebeat-6.4.0-linux-x86_64 filebeat-6.4.0 cd filebeat-6.4.0 |
3.2 配置Logstash、Filebeat 最新版引入module的概念,具体查看官方文档
官方参考地址:https://www.elastic.co/guide/en/logstash/6.4/advanced-pipeline.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Logstash-test.yml cd logstash-6.4.0 vi logstash_test.conf input{ file { path => "/var/log/vsftpd.log" type => "ftp-log-226" start_position => "beginning" stat_interval => "2" } } output{ if [ type ] == "ftp-log-226" { elasticsearch { hosts => [ "10.240.37.56:9200" ] index => "ftp-meizi-%{+YYYY.MM.dd}" } } } |
3.3 启动Logstash、Filebeat
1 2 3 4 5 | #后台启动 filebeat nohup . /filebeat -c . /filebeat .yml & #启动Logstash nohup . /bin/logstash -f logstash- test .conf & |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构