• ELK+logback搭建日志系统


    最近工作需要,开始研究ES,当前ES的最新版本为5.1.1,版本5.0.1以上jdk为1.8,缓存服务器用的redis

    本篇会记录ES5.1.1 + Kibana 5.1.1 + es-head插件在Linux环境上安装操作步骤。

    首先,去Elastic官网 https://www.elastic.co/downloads  ,下载页有所有Elastic的产品,都是最新的版本(版本号还一致)。

    技术分享

     下载完成后,全部解压,使用unzip和tar -xvzf

    (一) 首先尝试去启动elasticsearch,到elasticsearch的bin目录下,执行./elasticseharch。

    如果遇到下面的错误:

    技术分享

    说明是用root账户来启动的,因为ES是没有权限限制的,还可以接收用户的脚本,所有用root账户很不安全,需要新建一个账户来启动。

    命令执行如下

    # adduser leichunqiong

    # passwd leichunqiong

    用root 给新建用户赋予权限

    1、进入bin目录下执行chmod +x elasticsearch

    2、chown leichunqiong.leichunqiong -R /opt/elasticsearch-5.1.1

    3、切换到新建用户

    # su leichunqiong

    4、修改vm.map 限制

    vi /etc/sysctl.conf vm.max_map_count=262144

    5、进入bin目录 执行./elasticsearch -d &

    然后就可以在命令行中用curl http://localhost:9200?pretty  看看输出

    此时,ES可以在本地访问,但是用浏览器远程的话,还是无法访问的,因为相应的端口没有打开

    进到安装目录/config/elasticsearch.yml,将network.host设置为0.0.0.0并且将访问端口放开

     

    接下来重启es 然后通过浏览器外部访问就可以了

    (二) 下一步现在我们来安装logstash

    1、解压完成后配置logstash的环境变量

    # echo "export PATH=$PATH:/usr/local/logstash-1.5.4/bin" > /etc/profile.d/logstash.sh
    # . /etc/profile
    可能会不生效,你可以关掉xshell重新连接

    2、启动logstash

    2.1 通过-e参数指定logstash的配置信息,用于快速测试,直接输出到屏幕。

    # logstash -e "input {stdin{}} output {stdout{}}"            
    my name is zhengyansheng.    //手动输入后回车,等待10秒后会有返回结果
    Logstash startup completed
    2015-10-08T13:55:50.660Z 0.0.0.0 my name is zhengyansheng.
    这种输出是直接原封不动的返回...
    2.2 通过-e参数指定logstash的配置信息,用于快速测试,以json格式输出到屏幕
    # logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
    my name is zhengyansheng.    //手动输入后回车,等待10秒后会有返回结果
    Logstash startup completed
    {
           "message" => "my name is zhengyansheng.",
          "@version" => "1",
        "@timestamp" => "2015-10-08T13:57:31.851Z",
              "host" => "0.0.0.0"
    }
    这种输出是以json格式的返回...
    3、logstash以配置文件方式启动
     
    # vim logstash-simple.conf 
    input { stdin {} }
    output {
       stdout { codec=> rubydebug }
    }
     
    # logstash -f logstash-simple.conf    //普通方式启动
    Logstash startup completed
     
    # logstash agent -f logstash-simple.conf --debug//开启debug模式
    Pipeline started {:level=>:debug}
    Logstash startup completed
    hello world.    //手动输入hello world.
    {
           "message" => "hello world.",
          "@version" => "1",
        "@timestamp" => "2015-10-08T14:01:43.724Z",
              "host" => "0.0.0.0"
    }
    效果同命令行配置参数一样.. 
    4、从redis数据库中读取然后输出到elasticsearch中
    # cat logstash-redis.conf
    input {
        redis {
            host => '192.168.1.104'  #ip
            data_type => 'list'
            port => "6379"
            key => 'logstash:redis' #自定义
            type => 'redis-input'   #自定义
        }
    }
    output {
        elasticsearch {
            host => "192.168.1.104"  #ip
            codec => "json"
            protocol => "http"  #版本1.0+ 必须指定协议http
        }
    }
     

    (三) 

    1、修改配置文件

    # vim /opt/kibana-5.1.1-linux-x86_
    64/config/kibana.yml
    elasticsearch_url: "http://192.168.1.104:9200"
    2、启动

     3、外部访问

     

    (四) 新建maven项目结合logstash

    1、加入apender jar包

    <dependency>
    <groupId>com.cwbase</groupId>
    <artifactId>logback-redis-appender</artifactId>
    <version>1.1.5</version>
    </dependency>
    2、配置logback.xml
    <configuration>
    <property name="type.name" value="" />
    <appender name="TEST" class="com.cwbase.logback.RedisAppender">
    <source>test-application</source>
    <!--type 可定为项目类型-->
    <type>${type.name}</type>
    <!--redis ip-->
    <host>192.168.1.218</host>
    <!--redis存放的key-->
    <key>logstash:redis</key>
    <tags>test-2</tags>
    <mdc>true</mdc>
    <location>true</location>
    <callerStackIndex>0</callerStackIndex>
    <!--additionalField添加附加字段 用于head插件显示-->
    <additionalField>
    <key>MyKey</key>
    <value>MyValue</value>
    </additionalField>
    <additionalField>
    <key>MySecondKey</key>
    <value>MyOtherValue</value>
    </additionalField>
    </appender>
    <!--日志输出-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
    <!--日志回滚周期30天-->
    <maxHistory>30</maxHistory>
    </rollingPolicy>
    <!-- <encoder>
    <pattern>%logger{15} - %message%n%xException{5}</pattern>
    </encoder>-->
    <encoder>
    <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} %caller{3} - %msg%n%xException{5}</pattern>
    </encoder>

    </appender>

    <logger name="application" level="DEBUG" />

    <root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="TEST" />
    </root>

    </configuration>
    3、写测试类,然后到kinana上边就可以看到你的日志啦

     (五) 可以将kibana替换elasticsearch-head插件进行页面展示,elasticsearch-head是一个elasticsearch的集群管理工具

    插件安装方法1:
    1.elasticsearch/bin/plugin -install mobz/elasticsearch-head
    2.运行es
    3.打开http://192.168.1.104:9200/_plugin/head/
    插件安装方法2:
    1.https://github.com/mobz/elasticsearch-head下载zip 解压
    2.建立elasticsearch-1.0.0pluginshead\_site文件
    3.将解压后的elasticsearch-head-master文件夹下的文件copy到_site
    4.运行es
    5.打开http://192.168.1.104:9200/_plugin/head/

     
  • 相关阅读:
    Python04 range()方法的使用、turtle.textinput()方法和write()的使用、turtle.numinput()的使用
    SpringBoot12 QueryDSL02之利用QueryDSL实现多表关联查询
    SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL、利用QueryDSL实现单表RUD、新增类初始化逻辑
    ES02 变量、数组、对象、方法
    JavaScript问题01 js代码放在header和body的区别
    Python03 字符串类型、强制类型转化、列表、元组、字典、集合
    Python02 标准输入输出、数据类型、变量、随记数的生成、turtle模块详解
    使用 Multipath TCP 为 iOS 创建备份连接(转)
    linux中的条件变量
    linux中网络编程<1>
  • 原文地址:https://www.cnblogs.com/Leiwang/p/6278329.html
Copyright © 2020-2023  润新知