EFK 搭建简单的日志分析系统(详细)

用途

▷ 通过filebeat实时收集 nginx访问日志、传输至elasticsearch集群 ▷ filebeat将收集的日志传输至elasticsearch集群 ▷ 通过kibana展示日志


实验架构

▷ 服务器配置

▷ 架构图


EFK软件安装

版本说明

▷ elasticsearch 7.3.2
▷ filebeat 7.3.2
▷ kibana 7.3.2

注意事项

▷ 三个组件版本必须一致
▷ elasticsearch必须3台以上且总数量为单数

安装路径

▷ /opt/elasticsearch
▷ /opt/filebeat
▷ /opt/kibana

elasticsearch安装:3台es均执行相同的安装步骤

 
  1. mkdir -p /opt/software && cd /opt/software

  2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz

  3. tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz

  4. mv elasticsearch-7.3.2 /opt/elasticsearch

  5. useradd elasticsearch -d /opt/elasticsearch -s /sbin/nologin

  6. mkdir -p /opt/logs/elasticsearch

  7. chown elasticsearch.elasticsearch /opt/elasticsearch -R

  8. chown elasticsearch.elasticsearch /opt/logs/elasticsearch -R

  9.  
  10. # 限制一个进程可以拥有的VMA(虚拟内存区域)的数量要超过262144,不然elasticsearch会报max virtual memory areas vm.max_map_count [65535] is too low, increase to at least [262144]

  11. echo "vm.max_map_count = 655350" >> /etc/sysctl.conf

  12. sysctl -p

filebeat安装

 
  1. mkdir -p /opt/software && cd /opt/software

  2. wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.2-linux-x86_64.tar.gz

  3. mkdir -p /opt/logs/filebeat/

  4. tar -zxvf filebeat-7.3.2-linux-x86_64.tar.gz

  5. mv filebeat-7.3.2-linux-x86_64 /opt/filebeat

kibana安装

 
  1. mkdir -p /opt/software && cd /opt/software

  2. wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.2-linux-x86_64.tar.gz

  3. tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz

  4. mv kibana-7.3.2-linux-x86_64 /opt/kibana

  5. useradd kibana -d /opt/kibana -s /sbin/nologin

  6. chown kibana.kibana /opt/kibana -R

nginx安装(用于生成日志,被filebeat收集)

 
  1. # 只在192.168.1.11安装

  2. yum install -y nginx

  3. /usr/sbin/nginx -c /etc/nginx/nginx.conf


elasticsearch配置

▷ 192.168.1.31 /opt/elasticsearch/config/elasticsearch.yml

 
  1. # 集群名字

  2. cluster.name: my-application

  3.  
  4. # 节点名字

  5. node.name: 192.168.1.31

  6.  
  7. # 日志位置

  8. path.logs: /opt/logs/elasticsearch

  9.  
  10. # 本节点访问IP

  11. network.host: 192.168.1.31

  12.  
  13. # 本节点访问

  14. http.port: 9200

  15.  
  16. # 节点运输端口

  17. transport.port: 9300

  18.  
  19. # 集群中其他主机的列表

  20. discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

  21.  
  22. # 首次启动全新的Elasticsearch集群时,在第一次选举中便对其票数进行计数的master节点的集合

  23. cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

  24.  
  25. # 启用跨域资源共享

  26. http.cors.enabled: true

  27. http.cors.allow-origin: "*"

  28.  
  29. # 只要有2台数据或主节点已加入集群,就可以恢复

  30. gateway.recover_after_nodes: 2

▷ 192.168.1.32 /opt/elasticsearch/config/elasticsearch.yml

 
  1. # 集群名字

  2. cluster.name: my-application

  3.  
  4. # 节点名字

  5. node.name: 192.168.1.32

  6.  
  7. # 日志位置

  8. path.logs: /opt/logs/elasticsearch

  9.  
  10. # 本节点访问IP

  11. network.host: 192.168.1.32

  12.  
  13. # 本节点访问

  14. http.port: 9200

  15.  
  16. # 节点运输端口

  17. transport.port: 9300

  18.  
  19. # 集群中其他主机的列表

  20. discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

  21.  
  22. # 首次启动全新的Elasticsearch集群时,在第一次选举中便对其票数进行计数的master节点的集合

  23. cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

  24.  
  25. # 启用跨域资源共享

  26. http.cors.enabled: true

  27. http.cors.allow-origin: "*"

  28.  
  29. # 只要有2台数据或主节点已加入集群,就可以恢复

  30. gateway.recover_after_nodes: 2

▷ 192.168.1.33 /opt/elasticsearch/config/elasticsearch.yml

 
  1. # 集群名字

  2. cluster.name: my-application

  3.  
  4. # 节点名字

  5. node.name: 192.168.1.33

  6.  
  7. # 日志位置

  8. path.logs: /opt/logs/elasticsearch

  9.  
  10. # 本节点访问IP

  11. network.host: 192.168.1.33

  12.  
  13. # 本节点访问

  14. http.port: 9200

  15.  
  16. # 节点运输端口

  17. transport.port: 9300

  18.  
  19. # 集群中其他主机的列表

  20. discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

  21.  
  22. # 首次启动全新的Elasticsearch集群时,在第一次选举中便对其票数进行计数的master节点的集合

  23. cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

  24.  
  25. # 启用跨域资源共享

  26. http.cors.enabled: true

  27. http.cors.allow-origin: "*"

  28.  
  29. # 只要有2台数据或主节点已加入集群,就可以恢复

  30. gateway.recover_after_nodes: 2


filebeat配置

192.168.1.11 /opt/filebeat/filebeat.yml

 
  1. # 文件输入

  2. filebeat.inputs:

  3. # 文件输入类型

  4. - type: log

  5. # 开启加载

  6. enabled: true

  7. # 文件位置

  8. paths:

  9. - /var/log/nginx/access.log

  10. # 自定义参数

  11. fields:

  12. type: nginx_access # 类型是nginx_access,和上面fields.type是一致的

  13.  
  14. # 输出至elasticsearch

  15. output.elasticsearch:

  16. # elasticsearch集群

  17. hosts: ["http://192.168.1.31:9200",

  18. "http://192.168.1.32:9200",

  19. "http://192.168.1.33:9200"]

  20.  
  21. # 索引配置

  22. indices:

  23. # 索引名

  24. - index: "nginx_access_%{+yyy.MM}"

  25. # 当类型是nginx_access时使用此索引

  26. when.equals:

  27. fields.type: "nginx_access"

  28.  
  29. # 关闭自带模板

  30. setup.template.enabled: false

  31.  
  32. # 开启日志记录

  33. logging.to_files: true

  34. # 日志等级

  35. logging.level: info

  36. # 日志文件

  37. logging.files:

  38. # 日志位置

  39. path: /opt/logs/filebeat/

  40. # 日志名字

  41. name: filebeat

  42. # 日志轮转期限,必须要2~1024

  43. keepfiles: 7

  44. # 日志轮转权限

  45. permissions: 0600


kibana配置

192.168.1.21 /opt/kibana/config/kibana.yml

 
  1. # 本节点访问端口

  2. server.port: 5601

  3.  
  4. # 本节点IP

  5. server.host: "192.168.1.21"

  6.  
  7. # 本节点名字

  8. server.name: "192.168.1.21"

  9.  
  10. # elasticsearch集群IP

  11. elasticsearch.hosts: ["http://192.168.1.31:9200",

  12. "http://192.168.1.32:9200",

  13. "http://192.168.1.33:9200"]


启动服务

 
  1. # elasticsearch启动(3台es均启动)

  2. sudo -u elasticsearch /opt/elasticsearch/bin/elasticsearch

  3.  
  4. # filebeat启动

  5. /opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml -d "publish"

  6.  
  7. # kibana启动

  8. sudo -u kibana /opt/kibana/bin/kibana -c /opt/kibana/config/kibana.yml

上面的启动方法是位于前台运行。systemd配置方法,会在《EFK教程》系列后续文章中提供,敬请关注!


kibana界面配置

1️⃣ 使用浏览器访问192.168.1.21:5601,看到以下界面表示启动成功

2️⃣ 点"Try our sample data"

3️⃣ "Help us improve the Elastic Stack by providing usage statistics for basic features. We will not share this data outside of Elastic"点"no”

4️⃣ "Add Data to kibana"点"Add data"

5️⃣ 进入视图


测试

访问nginx,生成日志

curl -I "http://192.168.1.11"
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值