用ELK搭建简单的日志收集分析系统【转】
缘起
在微服务开发过程中,一般都会利用多台服务器做分布式部署,如何能够把分散在各个服务器中的日志归集起来做分析处理,是一个微服务服务需要考虑的一个因素。
搭建一个日志系统
搭建一个日志系统需要考虑一下一些因素:
- 利用什么技术,是自己实现还利用现成的组件
- 日志需要定义统一的格式
- 日志需要拥有一个锚点来进行全局跟踪
第一个问题,针对我们小公司来说,基本没有自己的研发能力,绝对是选用第三方开源的组件了。ELK配置比较简单,有现成的UI界面,容易检索日志信息,是首选。
第二个问题,利用log4j2定义好统一的日志格式,利用logstash过滤日志内容。
第三个问题,全局跟踪的ID有几种生产方式,一种是利用UUID或者生成随机数,一种是利用数据库来生成sequence number,还可以通过自定义一个id生成服务来获取。考虑到自身服务的需要,这里选用生成随机数来实现。
日志系统架构
从左边看起,每一台webserver上都会部署一个logstash-agent,它的作用是用类似tailf的方式监听日志文件,然后把新添加的日志发送到redis队列里面,logstash-indexer负责从redis相应的队列里面取出日志,对日志进进行加工后输出到elasticsearch中,elasticsearch会根据要求对日志进行索引归集,最后用户可以通过kibana来查看和分析日志。
开始搭建日志系统
准备工作
- 安装JDK8
- 安装Redis2.8
这里不涉及怎样安装JDK和Redis,请自行查阅资料
使用logstash2.3.1, elasticsearch2.3.1, kibana2.3.1
首先去ELK官网下载相应的压缩包
https://www.elastic.co/downloads
在webserver上安装logstash-agent
1.解压 tar -zxvf logstash2.3.1
2.检验安装是否成功 bin/logstash -e "input{stdin{}}output{stdout{}}"
,然后在终端输入hello,看看有没有内容返回
3.编写配置文件logstash_agent.conf
在logstash安装目录下新建conf文件夹,在里面新建配置文件logstash_agent.conf
input {
file {
type => "customer_service"
#需要收集的日志文件
path => ["/home/java/logs/cust/customer-service-*.log"]
tags => ["customer-service", "log4j2"]
#
codec => multiline { #
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
}
}
}
output {
redis {
host => "192.168.235.195"
data_type => "list"
key => "logstash:redis:customer"
}
}
4.后台启动 nohup ./bin/logstash -f conf/logstash_agent.conf &
在日志server上安装elasticsearch
1.解压tar -zxvf elasticsearch-2.3.1.tar.gz
2.修改安装目录下的配置文件config/elasticsearch.yml
把network.host字段给反注释掉,把地址改为0.0.0.0(官方并没明确说要去改这配置,默认配置应该就可以了,不过实测的时候发现如果不做这修改,elasticsearch访问不了)
3.后台启动elasticsearch nohup ./bin/elasticsearch &
在日志server上安装logstash-indexer
与在webserver上安装logstash-agent
一节基本相同,只是配置文件不一样,这里使用logstash-indexer.conf
input {
redis {
host => "localhost" #redis地址
data_type => "list"
key => "logstash:redis:customer"
type => "redis-input"
}
}
filter {
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:date} \[(?<thread_name>.+?)\] (?<log_level>\w+)\s*(?<content>.*)"
}
}
date {
match => ["timestamp", "dd/MMM/YYYY:HH:mm:ss Z"]
}
}
output {
if[type] == "customer_service" {
elasticsearch {
#embedded => false
#protocol => "http"
hosts => "localhost:9200"
index => "customer-%{+YYYY.MM.dd}"
}
}else if[type] == "其他类型" {
elasticsearch {
#embedded => false
#protocol => "http"
hosts => "localhost:9200"
index => "其他类型索引名字-%{+YYYY.MM.dd}"
}
}else {
//做其他处理
}
stdout{ #输出到标准输出,可以去掉
}
}
启动logstash-indexer
nohup ./bin/logstash -f conf/logstash-indexer.conf &
在日志server上安装kibana
1.解压tar -zxvf kibana-4.5.0-linux-x64.gz
2.后台启动kibana nohup ./bin/kibana &
这里没有特别去配置kibana要访问的elasticsearch地址,默认它会找本地的,如果需要,可以到conf/kibana.yml修改
配置log4j2的日志格式
<PatternLayout pattern="%d{ISO8601} %t %level %msg%n"/>
访问kibana主页
1.打开kibana主页http://your-kibana-ip:5601/
2.输入索引customer-*
,并点击create
3.在Discover页面观察日志
ToDo:
需要了解elasticsearch日志存放在哪里,定期清理日志
清理Elasticsearch索引
索引放久了需要清理,清理所以可以使用Elasticsearch的API。
例如我需要删除某个索引2016年5月份的所有索引,可以使用下面的命令:
curl -XDELETE 'http://localhost:9200/customer-2016.05.*'
更多API可以查阅Elastic官网
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html
参考资料
http://www.cnblogs.com/yjf512/p/4199105.html
http://www.cnblogs.com/xing901022/p/4805586.html
https://github.com/chenryn/logstash-best-practice-cn/blob/master/codec/multiline.md
http://www.open-open.com/lib/view/open1451801542042.html
转自
用ELK搭建简单的日志收集分析系统
http://m.blog.csdn.net/lzw_2006/article/details/51280058
用ELK搭建简单的日志收集分析系统【转】的更多相关文章
- logstash+elasticsearch+kibana搭建日志收集分析系统
来源: http://blog.csdn.net/xifeijian/article/details/50829617 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散 ...
- zipkin+elk微服务日志收集分析系统
docker安装elk日志分析系统 在win10上安装docker环境 tip:win7/8 win7.win8 系统 win7.win8 等需要利用 docker toolbox 来安装,国内可以使 ...
- ELK+kafka日志收集分析系统
环境: 服务器IP 软件 版本 192.168.0.156 zookeeper+kafka zk:3.4.14 kafka:2.11-2.2.0 192.168.0.42 zookeeper+kaf ...
- ELK之方便的日志收集、搜索、展示工具
大家在做分部署系统开发的时候是不是经常因为查找日志而头疼,因为各服务器各应用都有自己日志,但比较分散,查找起来也比较麻烦,今天就给大家推荐一整套方便的工具ELK,ELK是Elastic公司开发的一整套 ...
- 2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)
章节一 2018年 ELK课程计划和效果演示1.课程安排和效果演示 简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示 es: localhost:9200 k ...
- ELK/EFK——日志收集分析平台
ELK——日志收集分析平台 ELK简介:在开源的日志管理方案之中,最出名的莫过于ELK了,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.1)ElasticSea ...
- syslog-ng日志收集分析服务搭建及配置
syslog-ng日志收集分析服务搭建及配置:1.网上下载eventlog_0.2.12.tar.gz.libol-0.3.18.tar.gz.syslog-ng_3.3.5.tar.gz三个软件: ...
- 2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(目录)
章节一 2018年 ELK课程计划和效果演示 1.课程安排和效果演示 简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示 章节二 elasticSearch 6.2版本基础讲解到 ...
- ELK:日志收集分析平台
简介 ELK是一个日志收集分析的平台,它能收集海量的日志,并将其根据字段切割.一来方便供开发查看日志,定位问题:二来可以根据日志进行统计分析,通过其强大的呈现能力,挖掘数据的潜在价值,分析重要指标的趋 ...
随机推荐
- week1day01 认识python 变量 数据类型 条件if语句
1.什么是python? Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像Pe ...
- VS中碰到的问题
1.调试的时候,语句已经注释掉了,但是在执行的时候还是运行了(或者某些变量值改变后,程序依然用的之前数据). 右键解决方案-->清理,然后重新生成.
- 【刷题】BZOJ 1030 [JSOI2007]文本生成器
Description JSOI交给队员ZYX一个任务,编制一个称之为"文本生成器"的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生 ...
- 【Codeforces 98E】 Help Shrek and Donkey 游戏策略神题
from http://www.cnblogs.com/MashiroSky/p/6576398.html A君有n张牌,B君有m张牌,桌上还有一张反扣着的牌,每张牌都不一样. 每个回合可以做两件事中 ...
- 测试开发linux面试之三:后台进程之操作
Hi,大家好我是Tom,继上次分享之后这次给大家带来新的知识. 进程是Linux系统中一个非常重要的概念.Linux是一个多任务的操作系统,系统上经常同时运行着多个进程.我们不关心这些进程究竟是如何分 ...
- 最长上升子序列nlogn算法
LIS问题是经典的动态规划问题,它的状态转移相信大家都很熟悉: f[i] = f[k] + 1 (k < i 且 A[k] < A[i]) 显然这样做复杂度是O(n^2) 有没有更快的算 ...
- bzoj2621: [Usaco2012 Mar]Cows in a Skyscraper(状压DP)
第一眼是3^n*n的做法...然而并不可行T T 后来发现对于奶牛的一个状态i,最优情况下剩下那个可以装奶牛的电梯剩下的可用重量是一定的,于是我们设f[i]表示奶牛状态为i的最小电梯数,g[i]为奶牛 ...
- Codeforces 311.E Biologist
E. Biologist time limit per test 1.5 seconds memory limit per test 256 megabytes input standard inpu ...
- mybatis基础犯错总结
1.关于mybatis的文件一般都是其mapper文件出错: 首先关于输入参数parameterType出错: (1)基本数据类型:如果输入参数只有一个,其数据类型可以是基本数据类型,也可以是自己定的 ...
- selenium利用Excel进行参数化(简单示例)
上篇搭建好环境后,正真开始我的自动化之旅了.... 开始之前特别说明一下testNG的版本,不能直接使用Eclipse直接线上下载的版本,线上版本太高,不能兼容,运行程序会报以下错误,需要自行下载低一 ...