一个简单的日志采集方案
2018-06-12 11:10
489 查看
一、原理
原理很简单,首先程序端使用log4j,然后配上redis的appender,将日志暂存到redis,然后logstash从redis中拉取数据,再存储到elasticsearche,最后用kibana展示。大致流程图如下:二、搭建
这里的搭建是为了演示采集方案,未考虑HA、安全等。2.1 搭建elasticsearch
1、访问官方网站下载程序包,https://www.elastic.co/cn/downloads/elasticsearch2、新建一个用户es(elasticsearch要求不能用root用户)
3、编辑/etc/security/limits.conf文件
es hard nofile 65536 es soft nofile 65536
目的是防止启动报错
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
4、编辑/etc/sysctl.conf
vm.max_map_count=655360
然后执行
sysctl -p
目的是防止启动报错
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
5、编辑配置文件elasticsearch.yml,主要修改如下属性
#指定es运行绑定ip network.host=192.168.1.2 #指定es集群名称 cluster.name=myes
6、执行如下命令启动
./elasticsearch -d
7、访问http://192.168.1.2:9200,查看是否启动成功
2.2 搭建kibana
1、访问官方网站下载程序包,https://www.elastic.co/cn/downloads/kibana2、修改配置文件kibana.yml ,主要修改如下字段
#kibana运行的ip server.host=192.168.1.2 #es的地址 elasticsearch.url="http://192.168.1.2:9200"
3、然后启动kibana
./kibana &
4、访问http://192.168.1.2:5601查看是否启动成功
2.3 搭建logstash
1、访问官方网站下载程序包,https://www.elastic.co/cn/downloads/logstash2、新建一个文件,名称为log.conf,内容如下
input{ redis{ host=>'192.168.1.97' port=>'6379' key=>"filmapi" data_type=>"list" type=>'redis-input' } } output{ elasticsearch{ hosts=>'192.168.1.2:9200' protocol=>"http" index=>"filmapi" } }
3、启动logstash
./logstash -f ../config/log.conf
2.4 程序集成log4j
1、添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.ryantenney.log4j</groupId> <artifactId>redis-appender</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>net.logstash.log4j</groupId> <artifactId>jsonevent-layout</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency>
2、修改配置文件
### set log levels ### log4j.rootLogger = info,console,redis #******************************************** #控制台的配置 log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n #******************************************** #redis的配置 log4j.appender.redis=com.ryantenney.log4j.RedisAppender log4j.appender.redis.layout=net.logstash.log4j.JSONEventLayout log4j.appender.redis.host=192.168.1.3 log4j.appender.redis.port=6379 #log4j.appender.redis.password=password log4j.appender.redis.key=filmapi log4j.appender.redis.period=500 log4j.appender.redis.batchSize=100 log4j.appender.redis.purgeOnFailure=true log4j.appender.redis.alwaysBatch=true log4j.appender.redis.daemonThread=true
3、启动程序
三、效果
1、redis中的数据效果2、kibana中的数据效果
相关文章推荐
- 自行控制loadrunner的socket协议性能测试 (转) 一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字
- 为自己建立一个简单的日志文件
- 一个日志实时处理方案
- 一个简单而又不影响运行的日志函数
- 防止mdf文件被非法附加后修改的一个简单实现方案
- 实现一个简单的服务端推方案
- 一个简单用C语言实现的日志函数
- 构建一个分布式操作系统的简单方案—答陈硕的“分布式系统中的进程标识”一文
- 一个简单粗暴的前后端分离方案(转)
- 一个简单用C语言实现的日志函数
- 如何在半小时搭建一个简单的日志分析平台?
- 自己写的一个java采集有关的简单类
- 用C#构建一个简单的采集系统之一-主界面设计
- 记录一下互联网日志实时收集和实时计算的简单方案
- 一个简单的前后端分离的方案
- 简单的防火墙登陆日志邮件定时发送方案实现
- 一个简单的自定义程序日志小样例
- 一个简单、漂亮、功能强大的Android日志程序:logger
- 一个简单粗暴的前后端分离方案
- C++实现一个简单的异常日志记录类