zoukankan      html  css  js  c++  java
  • 3.logstash

    logstash同样不需要以root身份运行,并且logstash是安装在应用服务器上的程序,负责推送应用服务器的日志到elasticsearch上

    • 解压logstash压缩包,将其放到某个目录下,创建logstash用户
    [root@localhost ~]# useradd logstash
    
    • logstash的配置文件:config/jvm.options和config/logstash.yml
    • 编写日志收集配置文件,将本机的nginx和tomcat日志发送给elastic
      • 修改nginx访问日志格式
    [root@localhost ~]# vim /etc/nginx/nginx.conf
    log_format json '{"@timestamp":"$time_iso8601",'
                               '"@version":"1",'
                               '"client":"$remote_addr",'
                               '"url":"$uri",'
                               '"status":"$status",'
                               '"domain":"$host",'
                               '"host":"$server_addr",'
                               '"size":$body_bytes_sent,'
                               '"responsetime":$request_time,'
                               '"referer": "$http_referer",'
                               '"ua": "$http_user_agent"'
                   '}';
    access_log  /var/log/nginx/access_json.log  json;
    [root@localhost ~]# systemctl reload nginx
    
      • 修改tomcat日志格式server.xml
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="{"clientip":"%h","ClientUser":"%l","authenticated":"%u","AccessTime":"%t","method":"%r","status":"%s","SendBytes":"%b","Query?string":"%q","partner":"%{Referer}i","AgentVersion":"%{User-Agent}i"}"/>
    
      • 编写logstash收集日志配置文件,注意日志文件的权限,logstash用户可能会没有权限读取日志
    [root@localhost ~]# vim /usr/logstash/config/toes.conf
    input {
           file {
           path => "/var/log/nginx/access_json.log"
           codec => "json"
           start_position => "beginning"
           type => "nginx-log"
        }
           file {
           path => "/usr/tomcat/logs/localhost_access_log.*.txt"
           codec => "json"
           start_position => "beginning"
           type => "tomcat-log"
        }
    }
    output {
      if [type] == "nginx-log"{
            elasticsearch {
               hosts => ["192.168.1.8:9200"]
               index => "nginx-log-%{+YYYY.MM.dd}"
            }
      }
      if [type] == "tomcat-log"{
            elasticsearch {
               hosts => ["192.168.1.77:9200"]
               index => "tomcat-access-%{+YYYY.MM.dd}"
            }
      }
    }
    
      • 开启logstash
    [root@bogon logstash]# su -c '/usr/logstash/bin/logstash -f /usr/logstash/config/toes.conf ' logstash
    
    • 默认标准输入标准输出
    #从标准输入读取,输出到标准输出,这里指定输出编码格式为json,如不指定默认为rubydebug
    logstash -e 'input { stdin{} } output { stdout{codec => json} }'
    

    收集/var/log/messages日志到es里面

    [root@bogon logstash]# vim config/logstash.conf
    input{
            file{
                    path => "/var/log/messages"
                    type => "system"
                    start_position => "beginning"
        }
    }
    output{
            elasticsearch{
                    hosts => ["192.168.1.75:9200"]
                    index => "system-%{+YYYY.MM.dd}"
      }
    }
    

    判断类型,使用codec将多行日志规整至一行

    input{
            file{
                    path => "/var/log/messages"
                    type => "system"
                    start_position => "beginning"
             }
            file{
                    path => "/home/elasticsearch/elasticsearch-6.8.0/logs/elasticsearch.log"
                    type => "es-error"
                    start_position => "beginning"
                    codec => multiline{
                                    pattern => "^["      #正则表达式匹配以[开头的行
                                    negate => true        #true或false,如果是true,则与正则不匹配的行将构成多行过滤器。反之亦然
                                    what => "previous"    #previous或next,将negate匹配到的行向上或向下合并成一行。
                            }                             #这整段的意思将不是以[开头的行,全都并入上一行,当匹配到[开始新的一行
            }
    }
    output{
            if [type] == "system" {     #判断类型,分清存放日志
            elasticsearch{
                    hosts => ["192.168.1.75:9200"]
                    index => "system-%{+YYYY.MM.dd}"
      }
    }
            if [type] == "es-error" {
            elasticsearch{
                    hosts => ["192.168.1.75:9200"]
                    index => "es-error-%{+YYYY.MM.dd}"
    }
    }
    }
    

      

      

    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    IDEA添加注释模板
    Docker安装Mysql
    Linux使用
    Linux使用
    Spring Cloud入门 (5)
    在IDEA中将SpringBoot项目打包成jar包
    Linux使用
    Linux使用
    Linux使用- 虚拟机安装 Linux
    Spring Cloud入门 (4)
  • 原文地址:https://www.cnblogs.com/forlive/p/13588494.html
Copyright © 2011-2022 走看看