EFK部署及应用

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: EFK部署及应用
  • 概述
    EFK可能都不熟悉,实际上EFK是大名鼎鼎的日志系统ELK的一个变种。
    在没有分布式日志的时候,每次出问题了需要查询日志的时候,需要登录到Linux服务器,使用命令cat -n xxxx|grep xxxx 搜索出日志在哪一行,然后cat -n xxx|tail -n +n行|head -n 显示多少行,这样不仅效率低下,而且对于程序异常也不方便查询,日志少还好,一旦整合出来的日志达到几个G或者几十G的时候,仅仅是搜索都会搜索很长时间了,当然如果知道是哪天什么时候发生的问题当然也方便查询,但是实际上很多时候有问题的时候,是不知道到底什么时候出的问题,所以就必须要在聚合日志中去搜索(一般日志是按照天来分文件的,聚合日志就是把很多天的日志合并在一起,这样方便查询),而搭建EFK日志分析系统的目的就是将日志聚合起来,达到快速查看快速分析的目的,使用EFK不仅可以快速的聚合出每天的日志,还能将不同项目的日志聚合起来,对于微服务和分布式架构来说,查询日志尤为方便,而且因为日志保存在Elasticsearch中,所以查询速度非常之快,EFK不是一个软件,而是一套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统。EFK是三个开源软件的缩写,分别表示:Elasticsearch , FileBeat, Kibana , 其中ELasticsearch负责日志保存和搜索,FileBeat负责收集日志,Kibana 负责界面,当然EFK和大名鼎鼎的ELK只有一个区别,那就是EFK把ELK的Logstash替换成了FileBeat,因为Filebeat相对于Logstash来说有2个好处:
    1、侵入低,无需修改程序目前任何代码和配置
    2、相对于Logstash来说性能高,Logstash对于IO占用很大
    当然FileBeat也并不是完全好过Logstash,毕竟Logstash对于日志的格式化这些相对FileBeat好很多,FileBeat只是将日志从日志文件中读取出来,当然如果你日志本身是有一定格式的,FileBeat也可以格式化,但是相对于Logstash来说,还是差一点
  • EFK含义
    Elasticsearch
    Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
    FileBeat
    Filebeat隶属于Beats。目前Beats包含六种工具:
    Packetbeat(搜集网络流量数据)
    Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
    Filebeat(搜集文件数据)
    Winlogbeat(搜集 Windows 事件日志数据)
    Auditbeat( 轻量型审计日志采集器)
    Heartbeat(轻量级服务器健康采集器)
    概述:filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的任职文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstash中存放。
    以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。
    Kibana
    Kibana可以为 Logstash 、Beats和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志
  • 环境准备
OS:suse12
jdk:1.8
elasticsearch:6.4.0
filebeat:6.4.0
kibana:6.4.0

获取连接:

elasticserach | filebeat| kinaba

  • elasticseach部署步骤

解压安装包

tar -zxf filebeat-6.4.0-linux-x86_64.tar.gz -C /app
tar -zxf elasticsearch-6.4.0.tar.gz  -C /app
tar -vxf kibana-6.4.0-linux-x86_64.tar.gz -C /app

elasticsearch.yml 主配置文件

jvm.options jvm相关配置,内存等

log4j2.properties 日志相关

elasticsearch默认不允许root启动,创建用户以及用户组

96-102:/app/elasticsearch-6.4.0 # groupadd esgroup
96-102:/app/elasticsearch-6.4.0 # useradd esroot -g esgroup -p esroot

更改目录及子目录用户组

96-102:/app # chown -R esroot:esgroup elasticsearch-6.4.0

更改系统参数

96-102:/etc/security # sysctl -p
vm.max_map_count = 655360

编辑配置文件

启动

esroot@96-102:/app/elasticsearch-6.4.0/bin> ./elasticsearch -d
-d代表后台启动

我这里启动报错

NativeController] Native controller process has stopped - no new native processes can be started

是由于系统限制,需要修改

esroot@96-102:/app/elasticsearch-6.4.0/bin> vim /etc/security/limits.conf 在末尾添加
esroot soft nofile 65536
esroot hard nofile 65536
esroot soft nproc 4096
esroot hard nproc 4096

然后再次启动就可以了

  • filebeat

    filebeat:主配置文件
vim filebeat.yml
filebeat.inputs:
- type: log
enabled: false              修改为true      
paths:
 - /var/log/*.log           修改为需要读取的日志路径,可配置多个(日志路径要能体现出日志所属模块,方便在kibana中查询日志所属模块)
 output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]  配置e的端口,在同一台用localhost
setup.kibana:
host: "localhost:5601"    修改kebana的ip和端口,需打开注释
初始化

启动

./filebeat setup -e  不初始化可能无法实时获取数据
后台方式启动filebeat:
 ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &  将所有标准输出及标准错误输出到/dev/null空设备,即没有任何输出
nohup ./filebeat -e -c filebeat.yml > filebeat.log &
停止filebeat:
查找进程ID并kill掉:
ps -ef |grep filebeat<br>kill -9  进程号
  • kibana

修改配置文件

vim /app/kibana-6.4.0-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"  打开注释

后台启动

nohup ./bin/kibana &

创建一个索引

就可以显示elsearch中该索引的信息了

Kibana查询语言基于Lucene查询语法。下面是一些提示,可能会帮到你:

为了执行一个文本搜索,可以简单的输入一个文本字符串。例如,如果你想搜索web服务器的日志,你可以输入关键字"msgType",这样你就可以搜索到所有有关"msgType"的字段

为了搜索一个特定字段的特定值,可以用字段的名称作为前缀。例如,你输入"msgType:200",将会找到所有msgType字段的值是200的文档

为了搜索一个范围值,你可以用括号范围语法,[START_VALUE TO END_VALUE]。例如,为了找到状态码是1-20的文档,你可以输入msgType:[1TO 20]

为了指定更改复杂的查询条件,你可以用布尔操作符 AND , OR , 和 NOT。例如,为了找到状态码是4xx并且extension字段是php或者html的文档,你可以输入msgType:[1TO 20] AND (status:1 OR type:1)

Visualize:使得你可以创建在你的Elasticsearch索引中的数据的可视化效果。然后,你可以构建dashboard来展示相关可视化。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
7月前
|
存储 Kubernetes Docker
|
6天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
存储 消息中间件 运维
Kubernetes中部署ELK Stack日志收集平台(上)
Kubernetes中部署ELK Stack日志收集平台
Kubernetes中部署ELK Stack日志收集平台(上)
|
7月前
|
JSON Kubernetes 索引
|
6天前
|
Prometheus Kubernetes Cloud Native
prometheus|云原生|轻型日志收集系统loki+promtail的部署说明
prometheus|云原生|轻型日志收集系统loki+promtail的部署说明
205 0
|
9月前
|
Kubernetes Shell Docker
|
存储 消息中间件 JSON
ELK-EFK-v7.12.0 日志平台部署
ELK-EFK-v7.12.0 日志平台部署
286 0
ELK-EFK-v7.12.0 日志平台部署
|
存储 应用服务中间件 Linux
开源日志管理系统Graylog之Sidecar功能实践
开源日志管理系统Graylog之Sidecar功能实践
608 0
开源日志管理系统Graylog之Sidecar功能实践
|
存储 缓存 JSON
基于EFK的Kubernetes日志采集方案
在本篇文章中,您将学习 Kubernetes 集群日志中涉及的关键概念和工作流。
1081 0
基于EFK的Kubernetes日志采集方案
|
存储 Kubernetes Ubuntu
使用 ezctl 工具部署和管理 Kubernetes 集群
使用 ezctl 工具部署和管理 Kubernetes 集群
1094 0
使用 ezctl 工具部署和管理 Kubernetes 集群