一、需求

使用logstash收集系统上的日志,并使用 grok解析日志,使用mutate修改解析出来的字段类型、删除字段、重命名字段,最后将解析好的日主输出到 elasticsearch中。

二、实现步骤

1、编写pipeline文件

vim output-es.yml

input {
file {
id => "mutate-id"
path => ["/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/output-es/*.log"]
start_position => "beginning"
sincedb_path => "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/output-es/sincedb.db"
codec => multiline {
pattern => "^\[+"
negate => "true"
what => "previous"
charset => "UTF-8"
auto_flush_interval => 2
}
}
} filter {
grok {
match => {
"message" => "(?m)^\[%{INT:pid}\]%{SPACE}%{TIMESTAMP_ISO8601:createTime}%{SPACE}\[%{DATA:threadName}\]%{SPACE}%{LOGLEVEL:LEVEL}%{SPACE}%{JAVACLASS:javaClass}#(?<methodName>[a-zA-Z_]+):%{INT:linenumber}%{SPACE}-%{GREEDYDATA:msg}"
remove_field => ["message"]
}
} mutate {
convert => {
"pid" => "integer"
} rename => {
"msg" => "message"
}
} # 格式化 createTime 将 源格式 转换成 目标格式
date {
match => ["createTime","yyyy-MM-dd HH:mm:ss.SSS","yyyy-MM-dd HH:mm:ss.SSS"]
target => "@timestamp"
remove_field => ["createTime"]
}
} output {
# 可以通过 template 或 template_name 指定es模板的名字
elasticsearch {
hosts => ["http://localhost:9200","http://localhost:9201","http://localhost:9202"]
user => "springboot_logstash"
password => "123456"
index => "springboot-%{+YYYY.MM.dd}"
template_overwrite => "false"
}
}

1、elasticsearch配置参数解析:

  1. hosts: es的访问地址,建议使用非master节点。
  2. user: 访问es的用户名。
  3. password:访问es的密码。
  4. index:在es中的索引名称。
  5. template:设置自己的es模板路径。
  6. template_name:使用es中的索引模板名称。
  7. 上方的es的密码是明文的,可能存在泄漏,可以使用 logstash keystore来解决。
    1. 参考链接 https://www.elastic.co/guide/en/logstash/current/keystore.html

2、可能会报的一个异常

{
"error": {
"root_cause": [
{
"type": "security_exception",
"reason": "action [indices:data/ write/bulk] is unauthorized for user [logstash_system] on indices [], this action is granted by the index privileges [create_doc,create,delete,index,write,all]"
}
],
"type": "secu rity_exception",
"reason": "action [indices:data/write/bulk] is unauthorized for user [logstash_system] on indices [], this action is granted by the index privileges [create_doc ,create,delete,index,write,all]"
},
"status": 403
}

当我们使用系统自带的logstash_system用户时,可能会报indices:data/write/bulk这个操作没有权限,解决方法如下(自己新建一个用户和角色)。

2、准备测试数据

[9708] 2021-05-13 11:14:51.873 [http-nio-8080-exec-1] INFO  org.springframework.web.servlet.DispatcherServlet#initServletBean:547 -Completed initialization in 1 ms
[9708] 2021-05-13 11:14:51.910 [http-nio-8080-exec-1] ERROR com.huan.study.LogController#showLog:32 -请求:[/showLog]发生了异常
java.lang.ArithmeticException: / by zero
at com.huan.study.LogController.showLog(LogController.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

3、启动logstash

bin/logstash -f output-es.yml

4、在es上创建索引模式

5、进行日志搜索

三、参考文档

1、https://www.elastic.co/guide/en/logstash/current/keystore.html

2、https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

logstash收集的日志输出到elasticsearch中的更多相关文章

  1. logstash收集rsyslog日志

    (1)rsyslog配置 在192.168.1.31配置 #vim /etc/rsyslog.conf *.* @@192.168.1.32:514 //所有设备名,所有日志级别都发送到192.168 ...

  2. logstash收集springboot日志

    logstash收集springboot日志 maven依赖 <dependency> <groupId>net.logstash.logback</groupId> ...

  3. 使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

    转载自:https://mp.weixin.qq.com/s/QQxwYh1uLCkKn1LK72ojJA 在以前的系统中,我们可以使用如下的几种方式来采集日志: 1.我们可以直接使用 Beats 把 ...

  4. logstash收集syslog日志

    logstash收集syslog日志注意:生产用syslog收集日志!!! 编写logstash配置文件 #首先我用rubydebug测试数据 [root@elk-node1 conf.d]# cat ...

  5. ELK-logstash案例实战之读取日志输出到elasticsearch

    简介:从日志文件中读取日志,输出到elasticsearch集群中 $ cd /home/es/logstash-/config $ vim test3_es.conf $ cd /home/es/l ...

  6. 使用Logstash把MySQL数据导入到Elasticsearch中

    总结:这种适合把已有的MySQL数据导入到Elasticsearch中 有一个csv文件,把里面的数据通过Navicat Premium 软件导入到数据表中,共有998条数据 文件下载地址:https ...

  7. logstash 6.6.0 读取nginx日志 插入到elasticsearch中

    logstash.conf input { # For detail config for log4j as input, # See: https://www.elastic.co/guide/en ...

  8. 构建Logstash+tomcat镜像(让logstash收集tomcat日志)

    1.首先pull logstash镜像作为父镜像(logstash的Dockerfile在最下面): 2.构建my-logstash镜像,使其在docker镜像实例化时,可以使用自定义的logstas ...

  9. Logstash收集nginx日志之使用grok过滤插件解析日志

    grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [ ...

随机推荐

  1. Ubantu启动失败,提示“Started GNOME Display Manager”之后起不来了

    我是在搭建DPDK环境时,为了尝试下多网卡多列配置,将虚拟机的网卡类型由e1000改成了vxnet3类型.之后修改了下内存大小和CPU核数.然后启动ubantu虚拟机,结果无法成功启动,显示结果如下: ...

  2. Ubuntu / CoreOS修改DNS配置

    不要直接手动修改文件 /etc/resolv.conf 安装好Ubuntu之后设置了静态IP地址,再重启后就无法解析域名.想重新设置一下DNS,打开/etc/resolv.conf cat /etc/ ...

  3. 硕盟 TYPE C转HDMI+VGA+USB3.0+PD3.0四口扩展坞

    硕盟SM-T54是一款USB-C 四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显示器.电视机或其他显示设备.产品可以接入硬盘. ...

  4. awk工作流程

    awk 工作过程:先执行BEGIN模块,再跟文本交互,最后执行END模块.也就是说BEGIN/END模块,这俩是单独操作跟文本是同一级,但执行有优先级,BEGIN模块>文本>END模块 行 ...

  5. windows环境下永久修改pip镜像源的方法

    在windows环境下修改pip镜像源的方法 (1)在windows文件管理器中,输入 %APPDATA% (2)会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pi ...

  6. 如何画UML,几种简单的模型分析

    如何画UML 前言 UML 类 类的关系 1.依赖关系 2.继承关系 3.实现关系 4.关联关系 5.聚合关系 6.组合关系 总结 参考 如何画UML 前言 最近在学习设计模式,其中不免涉及到 UML ...

  7. STM32L0系列EEPROM中结构体的读取

    在STM32L0中操作EEPROM本来参考了上篇操作FLASH的方法,多多少少都有些问题.我觉得可能是结构体在转换成其他变量的时候出了问题. 比如下面这段代码,在Windows上可以正常运行(使用g+ ...

  8. symfony的几个请求变量和方法

    请求变量 // 全部变量 $request->query->all(); // 指定变量 $request->query->get('abc'); 请求方式 $request- ...

  9. php保留2位小数方法

    $num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 $format_ ...

  10. AVS 端能力之蓝牙模块

    该类为蓝牙端能力处理类,主要负责蓝牙设备配对和蓝牙音频播放功能. 功能简介 实现蓝牙设备的启动发现模式.扫描蓝牙设备.建立蓝牙连接功能 实现蓝牙设备音频播放.停止.上一首.下一首功能 其它细节参考&l ...