A session of Log Collect, Retrieval and Analysis using ELK Stack
Motivation
运维过程中对问题的定位往往需要跟踪和定位日志。分布式和弹性计算的引入,使得日志的定位和分析变得越发复杂。
本次实践主要的目的是考察现有成熟的日志收集、检索和分析方案:Kafka+ELK。
Progress
20160324 init
20160329
build playground of Logstash, Elastissearch, Kibana,对Log4j、Logback的文件执行相应处理,这已经满足了业务需求。
对Kafka的考察还是纳入消息处理框架中,这里不再记录。
同时,因日志限于资质原因,这里不展示Kibana的查询和统计界面。
Outline
- 0 参考
- 1 Logstash
- 2 Elasticsearch
- 3 Kibana4
- 参考资料
0 参考
0.1 Log Management for Spring Boot Applications with Logstash, Elasticsearch and Kibana
代码:/home/zhoujiagen/workspace/github/elk-example
0.2 log4j Input plugin
0.3 multiline Codec plugin
0.4 grok Filter Plugin
内建的patterns: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
0.5 kafka Input plugin
0.6 date Filter plugin
1 Logstash
bin/logstash -f config/log4j.conf
Log4j 1.x的配置
#log4j.rootLogger=INFO, console
log4j.rootLogger=INFO, console, logstash
### Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%p] [%t] %l => %m%n
### SocketAppender
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.Port=4560
log4j.appender.logstash.RemoteHost=localhost
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true
log4j.conf
input {
log4j {
type => "log4j-logstash"
port => 4560
}
}
filter {
multiline {
pattern => "^(%{TIMESTAMP_ISO8601})"
negate => true
what => "previous"
}
grok {
"message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:loglevel}\] \[%{WORD:threadname}\] %{JAVACLASS:class}\.%{WORD:method}\(%{JAVAFILE:file}\:%{NUMBER:line}\) => %{GREEDYDATA:logmessage}"
}
}
output{
elasticsearch { hosts => "localhost:9200" }
stdout { codec => rubydebug }
}
Logback的配置
#########################################################
### 输入
#########################################################
input{
stdin{}
file{
path => ["/home/zhoujiagen/filecenter/logs/app*.log"]
}
}
#########################################################
### 过滤
###
### grok 可以使用测试链接:http://grokdebug.herokuapp.com/
#########################################################
filter{
multiline {
pattern => "^(%{TIMESTAMP_ISO8601})"
negate => true
what => "previous"
}
grok {
# Do multiline matching with (?m) as the above mutliline filter may add newlines to the log messages.
match => [ "message", "(?m)^%{TIMESTAMP_ISO8601:logtime} \[%{PROG:threadname}\] %{LOGLEVEL:loglevel} %{SPACE} %{JAVACLASS:classname}\:%{NUMBER:codeline} - %{GREEDYDATA:logmessage}" ]
}
}
#########################################################
### 输出
#########################################################
output{
elasticsearch { hosts => "localhost:9200" }
stdout{ codec=>rubydebug }
}
2 Elasticsearch
# instance 1
~/devtools/elasticsearch-2.2.1$ bin/elasticsearch
# instance 2
~/devtools/elasticsearch-2.2.1$ bin/elasticsearch
# or
~/devtools/elasticsearch-2.2.1_instance2$ bin/elasticsearch
3 Kibana4
bin/kibana
assess through: http://localhost:5601/
参考资料
-1 ELK官方文档
0 ELK介绍
1 ELK安装
How To Install Elasticsearch, Logstash, and Kibana (ELK Stack) on Ubuntu 14.04
2 ELK使用
Centralized logging with an ELK stack (Elasticsearch-Logstash-Kibana) on Ubuntu
Log Management for Spring Boot Applications with Logstash, Elasticsearch and Kibana
使用 ELK Stack 集中 IBM Bluemix 应用程序日志
A session of Log Collect, Retrieval and Analysis using ELK Stack的更多相关文章
- Log Collect
http://ossectools.blogspot.com/2011/03/comprehensive-log-collection.html https://www.hacking-lab.com ...
- Hibernate(3)——实例总结Hibernate对象的状态和ThreadLoacl封闭的session
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: Hibernate的内部执行过程(CRUD) 对象的状态及其转换图和例子 使用JUnit测试 使用getCur ...
- ZooKeeper个人笔记Session管理
Session 1.sessionId <机器的SID,当前时间>生成一个sessionId,这是全局唯一的. 2.TimeOut 会话的超时时间,注意,这个值和客户端ZooKeeper ...
- 【原创】Tomcat集群环境下对session进行外部缓存的方法(1)
BJJC网改版, 计划将应用部署在tomcat集群上,集群的部署方案为Apache+Tomcat6,连接件为mod_jk,其中开启了session复制和粘性session.计划节点数为3个. 到这,或 ...
- express手工实现session原理
var express = require('express'); var cookieParser = require('cookie-parser'); var bodyParser = requ ...
- SpringBoot集成Shiro并用MongoDB做Session存储
之前项目鉴权一直使用的Shiro,那是在Spring MVC里面使用的比较多,而且都是用XML来配置,用Shiro来做权限控制相对比较简单而且成熟,而且我一直都把Shiro的session放在mong ...
- 使用Spring Session实现Spring Boot水平扩展
小编说:本文使用Spring Session实现了Spring Boot水平扩展,每个Spring Boot应用与其他水平扩展的Spring Boot一样,都能处理用户请求.如果宕机,Nginx会将请 ...
- nodejs操作session和cookie
session: 安装模块 cnpm install express-session 引入session注册到路由 var express = require('express'); var sess ...
- Pocket Gem OA: Log Parser
time a given player spends actually connected to the network. We keep console logs of various game s ...
随机推荐
- 实验一 cmd命令的编写
一.目的和要求 1. 实验目的 (1)掌握命令解释程序的原理: (2)*掌握简单的DOS调用方法: (3)掌握C语言编程初步. 2.实验要求 编写类似于DOS,UNIX的命令行解释程序 (1)自行定义 ...
- JAVA中最常用的十个快捷键
http://blog.sina.com.cn/s/blog_5fb39f910101dc2b.html 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以 ...
- img图片下面出现莫名的下边距解决办法
图片底部的空隙实际上涉及行内元素的布局模型,图片默认的垂直对齐方式是基线,而基线的位置是与字体相关的.所以在某些时候,图片底部的空隙可能是 2px,而有时可能是 4px 或更多.不同的 font-si ...
- 仓储管理系统500bug记录一下mysql 8小时超时解决办法
HTTP Status 500 - Request processing failed; nested exception is org.springframework.dao.TransientDa ...
- IIC总线解析
IIC简介: IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,IIC是一种多向控 ...
- Spring学习笔记
Spring 的控制反转:把对象的创建.初始化.销毁等工作交给Spring 容器来做,有spring容器控制对象的生命周期 applicationContext.xml beans --->sp ...
- java JVM
1.ClassLoader(类加载器) 1.加载:查找并加载类的二进制数据 2.连接 —验证:确保被加载的类的正确性(防止不是通过java命令生成的class文件被加载) —准备:为类的静态变量分配内 ...
- 第三篇bootstrap 网格基础
Bootstrap 提供了一套响应式.移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. 网格系统类似一个表格,有行和列,它必须放置在一个类型设置为c ...
- Altium Designer自动更新——解决方法
今天,打开AD,一直显示更新,关机重启也不管事. 然后,我把AD安装目录下,system文件夹下的Installation文件夹删了.就不再更新了.
- UDP丢包严重
项目要求udp能够达到10万的并发量,搞了几天,丢包严重, 今天终于解决了,原来是socket缓冲区设置的不够大已经jvm内存不够大