美文网首页
ELK0.9搭建

ELK0.9搭建

作者: SeaMonster | 来源:发表于2017-07-19 18:21 被阅读0次

    1. ELK是什么

    ELK是ElasticSearch,Logstash,Kibana加在一起的缩写,ElasticSearch简称ES,主要用来存储和检索数据。Logstash主要用来往ES中写入数据。Kibana主要用来展示数据。一般用这几个应用组合来搭建分布式日志系统,监控平台。

    2. 为什么要使用ELK

    记录系统日志,并方便检索

    我在维护一个已经运行很多年的网站,一个Java WEB项目,部署在weblogic上,后台使用的是Oracle数据库,平心而论这个项目全部用开源的技术就好,根本没必要花钱用Oracle的东西,不过这种电信的遗留系统,也不能说调整就调整,呵呵扯远了。
    最开始一台服务器就能跑起来了,后来访问量大了,就增加几台服务器,再配个负载均衡。问题来了,后台的日志都是打印在war包所在服务器上,系统出现问题的话需要逐个服务器查找日志文件,相当麻烦。能不能把这些分布式的日志都放到同一个地方呢?一开始有个“大神”(好像是我)想到了把日志都放到数据库-Oracle。问题是勉强解决,但是,日志本身只会不停新增,不会有更新操作,删除操作,也不会有什么一致性要求,放到关系型数据库实在是杀鸡用牛刀的感觉,于是后来就用到了这个ELK。
    以往有syslogd等工具可以汇总到一台机器,但都是以文件方式,搜索不方便。Logstash可配置输出到ElasticSearch服务帮忙做搜索功能,可以做到实时的关键字搜索,作为系统管理员,这个配置非常方便。

    为什么要用0.9版本? 现在都有ELK5了啊

    所谓的0.9版本其实就是指ElasticSearch的0.9版本。而0.9版本是最后一个还支持JDK 1.6的版本。JDK1.6是国内第一个被大范围广泛使用的JDK版本,直到现在还有无数的项目用着1.6。 因为安装ELK的服务器正是某个电信遗留系统所在的服务器,给遗留系统升级JDK版本也不是说升级就升级的,除了技术上的工作还有大量非技术的工作,这会折腾我好多时间,所以先用0.9试试手,以后再找一台新的服务器安装最新的ELK,以便用上其更强大的功能。

    3. 安装步骤

    系统环境

    16核 Intel(r) Xeon(R) CPU E5620 @ 2.40GHz
    32G内存
    Red Hat Enterprise Linux Server release 5.5 (Tikanga)
    jdk1.6.0_23

    Redis

    Redis是什么

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

    为什么要使用Redis

    ELK本身并没有Redis,为什么会需要这个东东呢?
    Redis在这里充当的是一个缓冲的消息队列。

    1. 在Java开发中,不少人会用到Logback作为日志的工具,由于Logback目前没有渠道直接把Log发到Logstash上,所以就做一个Appender,先把log发送到Redis上,然后logstash自己上redis取日志
    2. 提高系统稳定性,避免因网络抖动等原因突然出现大量写入日志造成阻塞。先把日志放到Redis中缓冲一下,即使logstash读取数据失败,数据依旧在Redis中不会丢失。

    安装

    安装的是3.2.8版本,编译安装

    $ wget http://download.redis.io/releases/redis-3.2.8.tar.gz
    $ tar xzvf redis-3.2.8.tar.gz
    $ cd redis-3.2.8
    $ make & make install
    $ vi redis.conf    
    # 编辑redis.conf文件
    #(1)把“bind 127.0.0.1”注释掉,否则redis只能从本地访问
    #(2)加上这一句:requirepass 【密码】,既然允许远程访问,自然应该设置密码
    $ cd src
    $ ./redis-server
    

    Logstash

    安装的是1.3.3版本,注意Logstash的版本必须对应ElasticSearch特定版本,否则无法运行,而且两者版本号并不是一致的,相当混乱,好像是ELK3还是ELK5重新整理了版本号才改善过来。

    $ mkdir logstash
    $ cd logstash
    $ wget http://download.elasticsearch.org/logstash/logstash/logstash-1.3.3-flatjar.jar
    # 创建redis-logstash.conf
    $ touch redis-logstash.conf
    $ vi redis-logstash.conf
    input{
        redis{
            host=>"127.0.0.1"      #我的redis也装在同一台服务器
            port=>6379                #redis的端口
            data_type=>"list"
            key=>"logstash"         # 自定义的key,需要与我在logback上配置的对应
            password=>"Abcedfg"  #在redis设置的访问密码
            codec=>json{
                charset=>"UTF-8"
            }
    }
    output{
        file{
            #从redis中获取的日志,放到这个文件,支持动态文件名
            path=>"/data/logs/logstash-%{+yyyy.MM.dd}.log"  
        }
        elasticsearch{
            host=>"127.0.0.1"  # 我的elasticsearch也是装在同一台服务器上
        }
    }
    # 直接用Java跑这个jar包
    # 其中 -f 是指以前台方式运行,结合实际情况考虑去掉
    $ java -jar logstash-1.3.3-flatjar.jar agent -f redis-logstash.conf
    

    ElasticSearch

    安装的版本是0.90.13

    $ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.13.tar.gz
    $ tar xvf elasticsearch-0.90.13.tar.gz
    $ cd elasticsearch-0.90.13/bin/
    # 使用的是默认的配置,在redis-logstash.conf中已经指定了ElasticSearch所在的ip,所以只需开启ElasticSearch,它自会处理日志
    # -f 是指以前台方式运行,根据实际情况去掉
    $ ./elasticsearch -f
    

    Kibana

    可以通过一个图形化的界面看日志
    logstash已经包含了:
    java -jar logstash-1.3.3-flatjar.jar web
    它默认使用的是9292端口,我们用一个支持HTML5的浏览器打开即可http://127.0.0.1:9292/index.html#/dashboard/file/logstash.json

    4. 不足与展望

    以上只是介绍了一个简单的安装步骤,可以看到安装的版本很旧,ELK全部装在一台服务器,索引也没有优化,内存会越来越少,也没有使用集群以保证高可用。这个以后再另写文章总结

    相关文章

      网友评论

          本文标题:ELK0.9搭建

          本文链接:https://www.haomeiwen.com/subject/agjuattx.html