网站首页 > 技术教程 正文
概述
Logstash来自ES家族,是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。
Logstash的数据处理流水线有三个主要角色完成:inputs –> filters –> outputs:
- inputs:必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、kafka、beats(如:Filebeats) 【拓展阅读】
- filters:可选,负责数据处理与转换(filters modify them),常用:grok、json,mutate、drop、clone、geoip 【拓展阅读】
- outputs:必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd、kafka【拓展阅读】
安装部署
logstash安装启动都非常简单,这里就简单提一下关键步骤:
1、部署jdk环境(这部分就不做介绍了)
2、安装 logstash
①、下载:
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.1.tar.gz
②、解压:
tar -xvf logstash-5.5.1.tar.gz
③、启动
nohup ./bin/logstash -f config/logstash.conf >/dev/null 2>&1 &
常用input配置:
1、读日志文件:
2、监听beat数据
3、读取redis数据
常用filter配置
1、MySQL慢日志:
filter {
#区分字段:
if [@metadata][type] == "mysql_slow_log" {
grok {
# 正则匹配(不同MySQL版本慢日志格式可能不通,此处适用于MySQL 5.7+版本)
match => [ "message", "(?m)^#\s+User@Host:\s+%{USER:user}\[[^\]]+\]\s+@\s+\[(?:%{IP:client_ip})?\]\s*\n#\s+Query_time:\s+%{NUMBER:query_time:float}\s+Lock_time
:\s+%{NUMBER:lock_time:float}\s+Rows_sent:\s+%{NUMBER:rows_sent:int}\s+Rows_examined:\s+%{NUMBER:rows_examined:int}\nSET\s+timestamp=%{NUMBER:timestamp};\n\s*(?<query>(?<a
ction>\w+)\b.*;)\s*(?:\n#\s+Time)?.*$"]
# 慢日志里面的主机IP为主机名,因此这里变相处理下,加入server_ip字段,值为beatname指定的值
add_field => [ "server_ip", "%{[beat][name]}" ]
# 匹配到了就加入标签
add_tag => [ "matched" ]
}
# 未匹配的数据直接drop
if ("matched" not in [tags]) {
drop {}
}
date {
# 这里对慢日志的时间戳进行格式转换
match => [ "timestamp", "UNIX","YYYY-MM-dd HH:mm:ss"]
remove_field => [ "timestamp" ]
}
# 此处对SQL进行MD5运算,并存到fingerprint字段,用于区分同一条SQL
mutate {
add_field => {"sql_hash" => "%{query}"}
gsub => [
"sql_hash", "'.+?'", "",
"sql_hash", "-?\d*\.{0,1}\d+", ""
]
}
fingerprint {
method => "MD5"
key => ["sql_hash"]
}
# 移除不需要的字段
mutate {
remove_field => "sql_hash"
remove_field => "[beat][hostname]"
remove_field => "[beat][name]"
remove_field => "@version"
remove_field => "[beat][version]"
remove_field => "input_type"
remove_field => "offset"
remove_field => "tags"
remove_field => "type"
remove_field => "message"
}
}
}
2、WEB访问日志
filter {
# 只处理标签为web_access_log的数据
if [@metadata][type] == "web_access_log" {
# 为了兼容中文路径,这里做了下数据替换
mutate {
gsub => ["message", "\\x", "\\\x"]
}
# 排除HEAD请求
if ( 'method":"HEAD' in [message] ) {
drop {}
}
# Nginx、Apache已经将日志格式定制为json,所以简单处理即可
json {
# 从数据中取出message
source => "message"
# 删除多余字段
remove_field => "message"
remove_field => "[beat][hostname]"
remove_field => "[beat][name]"
remove_field => "@version"
remove_field => "[beat][version]"
remove_field => "input_type"
remove_field => "offset"
remove_field => "tags"
remove_field => "type"
remove_field => "host"
}
}
}
3、系统日志
大同小异,就不做注释了。
filter {
if [@metadata][type] == "messages" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:message_timestamp} %{SYSLOGHOST:hostname} %{DATA:message_program}(?:\[%{POSINT:message_pid}\])?: %{GREEDYDATA:mess
age_content}" }
add_field => [ "ip", "%{[beat][name]}" ]
add_tag => [ "matched" ]
}
if ("matched" not in [tags]) {
drop {}
}
date {
locale => "en_US"
timezone => "Asia/Shanghai"
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601" ]
target => "@timestamp"
}
ruby {
code => "event['@timestamp'] = event['@timestamp'].getlocal"
}
mutate {
remove_field => "[beat][hostname]"
remove_field => "[beat][name]"
remove_field => "@version"
remove_field => "[beat][version]"
remove_field => "input_type"
remove_field => "offset"
remove_field => "tags"
remove_field => "type"
remove_field => "host"
}
}
常用output设置
1、直接打屏(DEBUG)
2、上报ES
篇幅有限,关于日志采集logstash就介绍到这了,后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注一下~
猜你喜欢
- 2024-10-14 使用分享 | minio 远程客户端mc备份nginx access日志
- 2024-10-14 Filebeat配置顶级字段Logstash在output输出到Elasticsearch使用
- 2024-10-14 rsyslog(手工配置)配置文件教程讲解
- 2024-10-14 分享一个实用脚本获取access.log的请求url和查其中最耗时的接口
- 2024-10-14 nginx 日志分析之 access.log 格式详解
- 2024-10-03 领导:如何使用GoAccess构建实时日志分析系统
- 2024-10-03 SpringCloud 日志在压测中的二三事
- 2024-10-03 基于nginx,kafka,zookeeper的Log收集系统
- 2024-10-03 手把手教程:使用Docker创建Nginx,实现Nginx日志分割
- 2024-10-03 goaccess 分析nginx log(nginx access配置)
欢迎 你 发表评论:
- 12-16修复windows(修复windowsapp文件夹)
- 12-16球队排名榜实时排名(球队排名榜实时排名怎么看)
- 12-16windows10产品密钥永久激活免费
- 12-16怎样恢复u盘里的文件(怎样恢复u盘内容)
- 12-16电脑用着用着就黑屏了是怎么回事
- 12-16uc浏览器下载安装2025最新版
- 12-16移动硬盘修复大概多少钱(移动硬盘修复的5种简单方法)
- 12-16mcafee agent怎么卸载(如何卸载mcafree)
- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)

本文暂时没有评论,来添加一个吧(●'◡'●)