ElasticSerach学习(五)-基于ES+filebeat+logstash实现日志收集系统

简介: ElasticSerach学习(五)-基于ES+filebeat+logstash实现日志收集系统

记录一下搭建elk+filebeat收集日志的全过程

环境:

es 7.7.1 单节点集群

logstash 7.7.1

filebeat 7.7.1

kibana 7.7.1


搭建环境均为linux,centos7


搭建目标:

  1. 使用filebeat读取log4j日志文件发送到logstash
  2. logstash进行过滤解析,发送到es
  1. 先直接发送到es
  2. 尝试过滤解析日志字段,拆分后发送到es
  1. 使用kibana进行查询



1. ES环境搭建

此处搭建es单节点集群

1.1 下载解压

下载地址: https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-7-1 当前最新版本为7.12 也可以下载

下载后上传到虚拟机,解压

1.2 新建用户

因为es不允许使用root用户,所以要新建用户

useradd es
passwd es
#输入密码 es


修改解压目录的所有者为es,防止权限问题

chown-R es:es #解压目录


1.3 修改虚拟机配置

修改虚拟机配置,文件数

vim /etc/security/limits.conf


在文件末尾添加一下内容

*               soft    nofile          65536*               hard    nofile          65536*               soft    nproc           4096*               hard    nproc           4096


修改虚拟机配置

vim /etc/sysctl.conf


文件末尾增加配置(如有配置,需修改)

vm.max_map_count =262144

注意:上述配置都需要使用root账号进行修改

1.4 修改es启动配置

接下来切换到es用户

su es


进入到解压目录,找到config目录,修改jvm的内存(默认为1g,需调小一点,不然虚拟机扛不住),如果虚拟机内存够,也可以不用调

cd config
vim jvm.options
#修改如下两行 (默认为1g)-Xms256m-Xmx256m



1.5 修改es配置

可以通过修改config目录下elasticsearch.yml修改es的相关配置,比如节点名称,访问ip,集群配置等.

由于我们这里是单节点集群,所以使用默认配置即可


1.6 启动es

进入解压目录下bin目录

cd bin
./elasticsearch -d

-d 使es后台运行,第一次运行可以不加-d,在控制台查看启动日志是否有异常.


1.7 关闭es

# 查看pid

nestat -nptl# 默认端口号为9200 9300对应的pidkill <pid>


2. logstash

2.1 下载解压

下载地址 https://www.elastic.co/cn/downloads/past-releases/logstash-7-7-1

解压到指定目录(使用es用户即可)


2.2 修改配置文件

2.2.1 修改jvm.options

进入config目录下,修改jvm内存

cd config
vim jvm.options
# 修改-Xms -Xmx两行-Xms256m-Xmx256m


2.2.2 修改logstash-sample.config文件

备份后修改此文件

input {
  beats {
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["http://192.168.164.132:9200"]
    index => "yxjcjk_log-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}



input 为数据来源

从beats输入,也就是filebeat访问的端口为5044

output 为数据输出

输出到es,配置es的访问地址,如果为集群,请配置多个,注意: es的访问地址是es的配置文件中配置的,默认为localhost,我这里是修改了该配置文件,换成了ip地址.

index是输入到es的index名称,可以指定年月日.



2.3 启动logstash

./bin/logstash -f ./config/logstash-sample.conf
# 使用nohup 后台启动nohup ./bin/logstah -f ./config/logstash-sample.conf > ./log/nohup.out 2>&1 &


2.4 停止logstash

# 同es 停止方法netstat -nptl# -9是发现kill杀不掉,使用-9强制停止kill-9 <pid>


3. filebeat

3.1 下载解压

下载地址 https://www.elastic.co/cn/downloads/past-releases/filebeat-7-7-1

解压到指定目录


3.2 修改配置

进入解压目录下 filebeat.reference.yml文件时filebeat的所有配置


我们备份下filebeat.yml,然后修改filebeat.yml文件

filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so# you can use different inputs for various configurations.# Below are the input specific configurations.- type: log
# Change to true to enable this input configuration.  enabled: true# Paths that should be crawled and fetched. Glob based paths.  paths:
- /home/elastic/test_logs/*.log  
#不以[开头的行都合并到上一行的末尾  multiline.pattern: ^\[
  multiline.negate: true  multiline.match: after
output.logstash:
# The Logstash hosts  hosts: ["localhost:5044"]


主要配置input,output

input 从日志文件读取,需要配置文件的地址,和多行合并,

output 输出到logstash,配置logstash的端口号即可


3.2 启动filebeat

# 直接启动,控制台输出日志./filebeat -e-c filebeat.yml
# 后台启动nohup ./filebeat -e-c filebeat.yml > nohup.out 2>&1 &

-e 启动

-c 指定配置文件


3.2 停止filebeat

同logstash/es

netstat -nptlkill <pid>


4. kibana

kibana主要用于可视化

4.1 下载解压

下载地址: https://www.elastic.co/cn/downloads/past-releases/kibana-7-7-1

解压到指定地址


4.2 启动

kibana无需修改什么配置,默认直接连接localhost:9200 的es,如果es的地址有修改的话改动下此配置即可,其他配置无需修改

nohup /home/elastic/kibata/kibana-7.7.1-linux-x86_64/bin/kibana > /home/elastic/kibata/kibana-7.7.1-linux-x86_64/log/nohup.out  2>&1 &

4.3 停止

netstat -nptl# 找到5601端口对应的pidkill <pid>



5. 读取日志发送到es

根据上述配置,逐个启动 es,kibana,logstash,filebeat,就会默认读取日志文件并发送到logstash,过滤后再发送到es

但是此时发送到es的日志还是一个消息整体,就是一个字符串,我们需要对每一条日志记录进行分析,拆分为字段后写入es.

5.1 logstash对日志进行分析过滤,拆分字段

使用的是Grok插件

Grok插件将记录拆分为一个个字段

5.1.1 Grok使用

Grok的语句是%{模式名:字段名}

会把对应的数据转换为字段



常用的模式记录如下:

WORD:配置字符串

TIMESTAMP_ISO8601:配置时间

LOGLEVEL:匹配日志级别

DATA:匹配长数据

INT:匹配数字

GREEDYDATA:匹配剩余数据


使用示例:

日志记录如下:

[yxjcjk][2021-05-13 16:22:33,773][ERROR][org.gocom.components.coframe.auth.LoginManager.mobile_login_biz:540] [Name=org.gocom.components.coframe.auth.LoginManager.mobile_login.biz][activity name=存入登录用户信息日志][activity id=invokePojo2] throw an exception:java.lang.Exception,exception :


对应开发的Grok表达式为:

\[%{WORD:sys}\]\[%{TIMESTAMP_ISO8601:time}\]\[%{LOGLEVEL:level}\]\[%{DATA:uri}:%{INT:line_num}\] %{GREEDYDATA:data}


此表达式提取了系统名称(sys),时间(time),日志级别(level),访问路径(uri),路径行数(line_num),剩余具体日志(data),最终输入到es



相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
5月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
501 122
基于docker搭建监控系统&日志收集
|
8月前
|
监控 API 开发工具
HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
本文深入解析HarmonyOS Next的HiLog日志系统,涵盖日志级别、核心API、隐私保护与高级回调功能,助你从入门到精通掌握这一重要开发工具。
|
5月前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
646 2
|
7月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4286 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
9月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
947 54
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
431 9
|
12月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
922 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log