logstash收集的日志输出到elasticsearch中
一、需求
使用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
配置参数解析:
-
hosts
:es
的访问地址,建议使用非master
节点。 -
user
: 访问es的用户名。 -
password
:访问es的密码。 -
index
:在es中的索引名称。 -
template
:设置自己的es模板路径。 -
template_name
:使用es中的索引模板名称。 - 上方的es的密码是明文的,可能存在泄漏,可以使用
logstash keystore
来解决。
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中的更多相关文章
-
logstash收集rsyslog日志
(1)rsyslog配置 在192.168.1.31配置 #vim /etc/rsyslog.conf *.* @@192.168.1.32:514 //所有设备名,所有日志级别都发送到192.168 ...
-
logstash收集springboot日志
logstash收集springboot日志 maven依赖 <dependency> <groupId>net.logstash.logback</groupId> ...
-
logstash收集syslog日志
logstash收集syslog日志注意:生产用syslog收集日志!!! 编写logstash配置文件 #首先我用rubydebug测试数据 [root@elk-node1 conf.d]# cat ...
-
ELK-logstash案例实战之读取日志输出到elasticsearch
简介:从日志文件中读取日志,输出到elasticsearch集群中 $ cd /home/es/logstash-/config $ vim test3_es.conf $ cd /home/es/l ...
-
logstash 6.6.0 读取nginx日志 插入到elasticsearch中
logstash.conf input { # For detail config for log4j as input, # See: https://www.elastic.co/guide/en ...
-
构建Logstash+tomcat镜像(让logstash收集tomcat日志)
1.首先pull logstash镜像作为父镜像(logstash的Dockerfile在最下面): 2.构建my-logstash镜像,使其在docker镜像实例化时,可以使用自定义的logstas ...
-
Logstash收集nginx日志之使用grok过滤插件解析日志
grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [ ...
-
logstash收集java日志,多行合并成一行
使用codec的multiline插件实现多行匹配,这是一个可以将多行进行合并的插件,而且可以使用what指定将匹配到的行与前面的行合并还是和后面的行合并. 1.java日志收集测试 input { ...
-
logstash收集IIS日志
匹配字段 %{TIMESTAMP_ISO8601:log_timestamp} (%{WORD:s-sitename}|-) (%{IPORHOST:s-ip}|-) (%{WORD:cs-metho ...
随机推荐
-
HQL基础查询语句
HQL基础查询语句 1.使用hql语句检索出Student表中的所有列 //核心代码 @Test public void oneTest() { Query query=session.createQ ...
-
Cxf soap协议改成1.2
在和.net做联调的时候,报错: A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint. 看来是soap协议不匹配 ...
-
DBCONN
package Ulike_servlet; //将该类保存到com.tools包中import java.sql.Connection;import java.sql.DriverManager;i ...
-
hdu 1262寻找素数对
Problem Description 哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数. 做好了这 ...
-
redis的list类型
1.简单介绍 redis的list类型其实就是一个每个元素都是string类型的双向链表.所以lpush.rpush.lpop和rpop命令的时间复杂度是O(1),list会记录链表的长度,所以lle ...
-
python 与rabbitmq
一.rabbitmq简介.安装 简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专 ...
-
Net Core动态加载webservice/WCF
1.动态加载的目的 前端时间和顺丰对接了个项目(PS:顺丰的开发对外能力真的是掉粉),用的webservice 测试时用的无固定IP访问,正式版需要固定IP访问,我的理解是web服务都是全网络可以访问 ...
-
烦神的斐波那契&;&;洛谷-1306-斐波那契公约数
传送门 洛谷1306传送门 -------------------------------------------------------------------------------------- ...
-
8. Rotate String
8. Rotate String Description Given a string and an offset, rotate string by offset. (rotate from lef ...
-
BZOJ1212[HNOI2004]L语言——trie树+DP
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...