搭建一个开发环境的elk注意事项备忘录

这个架构主要适用于开发环境小数据量的场景,存在数据丢失的风险。
这个架构主要试用与开发环境小数据量的场景,存在数据丢失的风险
这种架构,主要加上了Redis或Kafka或RabbitMQ做消息队列,保证了消息的不丢失。由于logstash是Java语言实现的,运行需要JDK,所以生产环境一般会在各个应用部署FileBeat,只部署一个logstash。
这种架构,主要加上了Redis或Kafka或RabbitMQ做消息队列,保证了消息的不丢失。

使用FileBeats将日志发送到Logstash

1)创建配置文件filebeat-logstash.yml,配置FileBeats将数据发送到Logstash

vim filebeat-logstash.yml
#要修改文件权限 不然会报错
chmod 644 filebeat-logstash.yml
#不以ip地址开头的行追加到上一行
filebeat.inputs:
- type: log
enabled: true
paths:
- /path/logs/access.*
#正则表达式
multiline.pattern: '^\d+\.\d+\.\d+\.\d+ ’
#true 或 false;默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行
multiline.negate: true
#after 或 before,合并到上一行的末尾或开头
multiline.match: after
output.logstash:
enabled: true
hosts: [“ip:host”]

2)启动FileBeat,并指定使用指定的配置文件
./filebeat -e -c filebeat-logstash.yml

配置Logstash接收FileBeat收集的数据并打印
vim config/filebeat-console.conf

配置从FileBeat接收数据

input {
beats {
port => 5044
}
}
filter {
grok {
match => {
“message” => “%{IP:ip} - - [%{HTTPDATE:date}] “%{WORD:method} %{PATH:uri} %{DATA:protocol}” %{INT:status:int} %{INT:length:int}”
}
}
mutate {
enable_metric => “false”
remove_field => [“message”, “log”, “tags”, “input”, “agent”, “host”, “ecs”, “@version”]
}
date {
match => [“date”,“dd/MMM/yyyy:HH:mm:ss Z”,“yyyy-MM-dd HH:mm:ss”]
target => “date”
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
#注意:index名称中,不能出现大写字符
index => “systemname%{+YYYY-MM}”
hosts => [“http://localhost:9200”]
user => “user”
password => “password”
}
}

测试logstash配置是否正确
bin/logstash -f config/filebeat-console.conf --config.test_and_exit
启动logstash: reload.automatic:修改配置文件时自动重新加载
bin/logstash -f config/filebeat-console.conf --config.reload.automatic

下载地址:

logstash下载地址: https://www.elastic.co/cn/downloads/past-releases#logstash
Filebeat下载地址:https://www.elastic.co/cn/downloads/past-releases#filebeat
es下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
kibana下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana

logstash插件:

Input Plugins:https://www.elastic.co/guide/en/logstash/7.17/input-plugins.html
Output Plugins:https://www.elastic.co/guide/en/logstash/7.17/output-plugins.html
Filter Plugins:https://www.elastic.co/guide/en/logstash/7.17/filter-plugins.html
Codec Plugins:https://www.elastic.co/guide/en/logstash/7.17/codec-plugins.html

Grok插件

Grok是一种将非结构化日志解析为结构化的插件。这个工具非常适合用来解析系统日志、Web服务器日志、MySQL或者是任意其他的日志格式。
Grok语法
Grok是通过模式匹配的方式来识别日志中的数据,可以把Grok插件简单理解为升级版本的正则表达式。它拥有更多的模式,默认Logstash拥有120个模式。如果这些模式不满足我们解析日志的需求,我们可以直接使用正则表达式来进行匹配。
grok模式的语法是:
%{SYNTAX:SEMANTIC}
SYNTAX(语法)指的是Grok模式名称,SEMANTIC(语义)是给模式匹配到的文本字段名。例如:
%{NUMBER:duration} %{IP:client}
duration表示:匹配一个数字,client表示匹配一个IP地址。
默认在Grok中,所有匹配到的的数据类型都是字符串,如果要转换成int类型(目前只支持int和float),可以这样:%{NUMBER:duration:int} %{IP:client}

常用的Grok模式:https://help.aliyun.com/document_detail/129387.html?scm=20140722.184.2.173
为了方便测试,我们可以使用Kibana的Grok Debugger来进行Grok开发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值