ELK实战记录

一。直接上logstash的配置文件output_redis.conf

input {
        
		log4j {
			type => "log4j-json-service"
			port => 5560
		}
		log4j {
			type => "log4j-json-web"
			port => 5561
		}
		log4j {
			type => "log4j-json-mobile"
			port => 5562
		}
		log4j {
			type => "log4j-json-app"
			port => 5563
		}
		log4j {
			type => "log4j-json-manager"
			port => 5564
		}
		log4j {
			type => "log4j-json-pay"
			port => 5565
		}
		log4j {
			type => "log4j-json-search"
			port => 5566
		}
		log4j {
			type => "log4j-json-restful"
			port => 5567
		}
		udp {
		    type => "log4j-json-node"
			port => 5568
		 }
}

output {
    if [type] == "nginxlog"{
		elasticsearch {
			 hosts => "127.0.0.1"
			 index => "logstash-%{type}-%{+YYYY.MM.dd}"
			}	
	}
	if [type] == "log4j-json"{
		elasticsearch {
				 hosts => "127.0.0.1"
				 index => "logstash-log4j-%{+YYYY.MM.dd}"
				}
	}
	if [type] =~ "log4j-json-*"{
		elasticsearch {
				 hosts => "127.0.0.1"
				 index => "logstash-log4j-local-%{+YYYY.MM.dd}"
				}
	}
			
}

最新版的logstash默认给json格式化了,省去不少功夫,唯一郁闷的是没找到ip转geoip的方法,有人弄好了麻烦告知一声- -~

input模块里接收的是java  log4j的日志,因为日志分模块输出,所有每个模块需要一个log4j{}来接收,udp是接收的node日志, nginx的删了.....

output模块是输出到elasticsearch的配置,根据不同的type,生成不同的index(索引)。

二。Java端和node端配置

java 这里只贴其中一个模块的日志,其他相同,只是Port改一下就好了,这里统一输出到内网ip:192.168.1.250, log4j.properties:

log4j.rootLogger=DEBUG, logstash
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.Port=5560
log4j.appender.logstash.RemoteHost=192.168.1.250
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true

log4j.logger.freemarker=INFO
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.org.springframework=INFO
log4j.logger.com.alibaba.dubbo=INFO
log4j.logger.org.apache.zookeeper=INFO
log4j.logger.com.101tec=INFO

node 这里统一输出到内网ip:192.168.1.250:

var helper = {};
exports.helper = helper;

var log4js = require('log4js');
var fs = require("fs");
var path = require("path");

// 加载配置文件
var objConfig = JSON.parse(fs.readFileSync("./config/log4js.json", "utf8"));

var objConfig = {
    "appenders": [
        {
            "type": "console",
            "category": "myLogger"
        },
        {
            "host": "192.168.1.250",
            "port": 5568,
            "type": "logstashUDP",
            "logType": "ppim", // Optional, defaults to 'category'
            "fields": {             // Optional, will be added to the 'fields' object in logstash
                "field1": "value1",
                "field2": "value2"
            },
            "layout": {
                "type": "pattern",
                "pattern": "%m"
            },
            "category": "myLogger"
        }
    ]
};

// 目录创建完毕,才加载配置,不然会出异常
log4js.configure(objConfig);
var logDebug = log4js.getLogger('myLogger');
var logInfo = log4js.getLogger('myLogger');
var logWarn = log4js.getLogger('myLogger');
var logErr = log4js.getLogger('myLogger');


helper.writeDebug = function(msg){
    if(msg == null)
        msg = "";
    logDebug.debug(msg);
};

helper.writeInfo = function(msg){
    if(msg == null)
        msg = "";
    logInfo.info(msg,'11','22');
};

helper.writeWarn = function(msg){
    if(msg == null)
        msg = "";
    logWarn.warn(msg);
};

helper.writeErr = function(msg, exp){
    if(msg == null)
        msg = "";
    if(exp != null)
        msg += "\r\n" + exp;
    logErr.error(msg);
};

// 配合express用的方法
exports.use = function(app) {
    //页面请求日志, level用auto时,默认级别是WARN
    app.use(log4js.connectLogger(logInfo, {level:'debug', format:':method :url'}));
};

三。经过上面两步,运行ELK,就可以在浏览器看到日志输出了。如果有疑问,可以查看文档,地址如下:

http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html

特别说明一点,安装logstash插件的命令是  logstash-plugin 。比如查询插件列表:

四。kibana的dashboard使用

然后保存,在dashboard点+号,就可以加入到dashboard里了。其他的图表类似操作就可以,要理解x轴和y轴的作用

五。搜索

先上代码,这是去除静态文件访问的一个搜索语句,类似sql,

它的查询语法关键字跟lucene一样DSL查询(Query DSL),下面只是抛砖引玉,各位自行探索

!document_uri:*css AND !document_uri: '-'   AND !document_uri:*.png AND !document_uri:*.jpg AND !document_uri:*.gif AND !document_uri:*.js  AND !document_uri:*.css

 

转载于:https://my.oschina.net/rockfate/blog/794369

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值