ELK:传统的ELK系统由Elasticsearch、Logstash、Kibana组成,由于Logstash由java语言开发的,占用资源巨大。Logstash的占用的资源甚至比Web服务本身消耗的资源还大,因此在每台web服务器上安装Logstash不合适。

ELFK: 后来在web服务器上部署filebeat日志采集程序,Logstash单独部署在服务器。filebeat由go语言开发,占用资源非常小。

filebeat 本质是一个agent,可以安装在应用服务器各个节点上,根据配置读取对应位置的日志文件,并通过网络上报道相应服务中。

EFK:Fluent软件由C语言开发,性能非常优秀,占用资源小,相当于替代了Logstash和filebeat的工作。




            基本流程图

关于ELK、ELFK、EFK日志分析平台_Kibana

对于ELFK:Logstash使用beats插件接收filebeat的采集的数据

[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
input { 
  beats {
    port => 5044
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

filebeat安装配置

[root@web-0001 ~]# dnf install -y filebeat

[root@web-0001 ~]# vim /etc/filebeat/filebeat.yml
25:  id: my-filestream-id # 如果同时配置多个收集器,id不能重复
28:  enabled: true # 打开收集模块
# 设置识别标签
49:  fields:
50:    logtype: apache_log
- /var/log/httpd/access_log # 日志文件路径
135: # 注释掉 Elasticsearch 配置
137: # 注释掉 Elasticsearch 配置
148: output.logstash: # 设置输出模块
150:   hosts: ["192.168.1.27:5044"] # 输出给logstash
163: processors:
164:   - drop_fields:  # 删除冗余数据
165:      fields:
166:        - log
167:        - offset
168:        - agent
169:        - ecs
170: #   - add_host_metadata: 注释掉(收集主机信息)
171: #       when.not.contains.tags: forwarded 注释掉(判断是否为容器)
172: #   - add_cloud_metadata: ~  注释掉(收集 cloud 信息)
173: #   - add_docker_metadata: ~ 注释掉(收集 docker 信息)
174: #   - add_kubernetes_metadata: ~ 注释掉(收集 kubernetes 信息)

systemctl restart httpd filebeat

# 测试验证: 访问页面,观察 logstash 输出的数据变化
调试好之后,其他web服务器操作一样,可以用ansible批量安装和改配置。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

配置Logstash服务器

  vim  /etc/logstash/conf.d/my.conf
  
 input { 
  beats {
    port => 5044
  }
}

filter{
  if [fields][logtype] == "apache_log" {
  grok {
    match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    remove_field => ["message"]
  }}
}

output{ 
  #stdout{ codec => "rubydebug" }
  if [fields][logtype] == "apache_log" {
  elasticsearch {
    hosts => ["es-0004:9200", "es-0005:9200"]
    index => "weblog-%{+YYYY.MM.dd}"
  }}
} 
  成功后改权限,设置为开机自启和后台启动
[root@logstash ~]# chown -R logstash.logstash /var/log/logstash /var/lib/logstash
[root@logstash ~]# systemctl enable --now logstash
  
  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

安装kibana

[root@kibana ~]# dnf install -y kibana

[root@kibana ~]# vim /etc/kibana/kibana.yml
02:  server.port: 5601
07:  server.host: "0.0.0.0"
23:  server.publicBaseUrl: "http://192.168.1.26:5601"
32:  elasticsearch.hosts: ["http://es-0004:9200", "http://es-0005:9200"]
115: i18n.locale: "zh-CN"
[root@kibana ~]# systemctl enable --now kibana

使用 ELB 发布端口 5601,通过 WEB 浏览器访问验证
使用 kibana 完成数据统计分析

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.