资讯专栏INFORMATION COLUMN

ELK结合logback搭建日志中心

tracy / 308人阅读

摘要:日志监控和分析在保障业务稳定运行时,起到了很重要的作用。本文搭建的的是一个分布式的日志收集和分析系统。对于队列上的这些未处理的日志,有不同的几台进行接收和分析。再由统一的进行日志界面的展示。如等配置文件可以配置,等日志报表可视化熟练

ELK简介ELKStack即Elasticsearch + Logstash + Kibana。日志监控和分析在保障业务稳定运行时,起到了很重要的作用。比如对nginx日志的监控分析,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录,所以可以通过读取日志文件来分析;redis的list结构正好可以作为队列使用,用来存储logstash传输的日志数据。然后elasticsearch就可以进行分析和查询了。
本文搭建的的是一个分布式的日志收集和分析系统。logstash有agent和indexer两个角色。对于agent角色,放在多带带的web机器上面,然后这个agent不断地读取nginx的日志文件,每当它读到新的日志信息以后,就将日志传送到网络上的一台redis队列上。对于队列上的这些未处理的日志,有不同的几台logstash indexer进行接收和分析。分析之后存储到elasticsearch进行搜索分析。再由统一的kibana进行日志web界面的展示。
以上为抄袭!!!
好吧,让我们切入正题:

Java环境安装

首先我们需要一台linux机器,紧哥其实非常不喜欢在window下安装软件,hoho~
当然我们也默认你已经安装了java,建议版本是使用1.8,但是我使用的是1.7,就是这么任性~

colin@colindev:~$ java -version 
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
Logstash安装

下载logstash并解压,推荐使用最新版本

创建simple.conf文件,并编写测试conf

input { stdin { } }
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}
colin@colindev:~$ wget https://download.elastic.co/logstash/logstash/logstash-2.3.1.tar.gz
colin@colindev:~$ tar -zvxf logstash-2.3.1.tar.gz
colin@colindev:~$ vim simple.conf 
colin@colindev:~$ /home/colin/logstash-2.3.1/bin/logstash -f simple.conf --debug

3.可以看到logstash已经运行,输入hello world会有log打印出来则安装成功

Elasticsearch安装

ElasticSearch默认的对外服务的HTTP端口是9200,节点间交互的TCP端口是9300(这个可以自配置),注意打开tcp端口

先下载并解压

安装mobz/elasticsearch-head插件

启动logstash并测试 elasticsearch 注意:启动elasticsearch的话不能用root账号哈~

colin@colindev:~$  wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.tar.gz
colin@colindev:~$  tar -zxvf elasticsearch-1.7.1.tar.gz 
[colin@colindev:bin ]$ ./plugin install mobz/elasticsearch-head
[colin@colindev bin]$ elasticsearch start

启动起来的界面是:

接下来就要安装kibana了

Kibana安装
[root@hadoop-slave ~]# wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
[root@hadoop-slave elk]# tar -zxf kibana-4.1.1-linux-x64.tar.gz 
[root@hadoop-slave elk]# mv kibana-4.1.1-linux-x64 /usr/local/elk
[root@hadoop-slave bin]# pwd
/usr/local/elk/kibana/bin
[root@hadoop-slave bin]# ./kibana  &

打开http://localhost:5601/
如果需要远程访问,需要打开iptables的tcp的5601端口。

ELK+logback结合

需要修改logstash的配置文件

修改logback配置文件github-> 使用ogstash-logback-encode

input {
  tcp {
    host => "192.168.1.167" 
    port => 9250
    mode => "server"
    tags => ["tags"]
    codec => json_lines  //可能需要更新logstash插件
  }

}


output {
 stdout{codec =>rubydebug}
  elasticsearch {
   hosts => ["localhost:9200"]  //这块配置需要带端口号
    flush_size => 1000

  }
}


         

    
         
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
            
        
    
    
        192.168.1.167:9250

        
        
    

    
        
    


                        
        
        
    

写一个测试程序:

import org.junit.Test;
import org.slf4j.LoggerFactory;


/**
 * Created by colinsu on 2016/4/14.
 */
public class LogstashTest {
    private static final org.slf4j.Logger LGR = LoggerFactory.getLogger(LogstashTest.class);

    @Test
    public void test() {
        LogstashTest obj = new LogstashTest();
        try{
            obj.divide();
        }catch(ArithmeticException ex){
            LGR.error("大家好111!", ex);
        }
    }
    private void divide(){
        int i = 10 /0;
    }
}

使用logstash debug模式

/home/colin/logstash-2.3.1/bin/logstash -f simple.conf --debug

这里可能因为buffer大小的原因不能flush,多执行几次就好了,timestamp会相差8小时,没有什么影响,在kibana会显示正常

使用kibana来查看相应的结果

待改进和学习的地方

需要加上收集的缓冲组件。如 redis,kafka等

配置文件可以配置niginx,linux,jvm等日志

报表可视化熟练

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65772.html

相关文章

  • window环境下搭建简单ELK日志收集

    摘要:部署环境依赖第三方组件下载地址官网简单的流程示意图跟都支持集群部署,本文只简单描述如何单独部署部署步骤三件套版本最好一致,小版本可以高,但是不可以低。 window环境下搭建简单ELK日志收集 前言本文主要介绍如何在window环境下部署elk日志收集,网络上大部分是linux的,刚好这边服务需要用到window 环境,配置方式有点不同,大体是一样的。 部署环境window serve...

    Baaaan 评论0 收藏0

发表评论

0条评论

tracy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<