一、修改kibana收集的的日志格式

1.修改tomcat的message格式为json

1)方法一:

[root@m01 conf.d]# vim java.conf 
input {
  file {
    path => "/usr/local/tomcat/logs/tomcat_access.*.log"
    type => "tomcat_access_log"
    start_position => "end"
  }
}

filter {
  json {
    source => "message"
    remove_field => ["message"]            #如果需要去掉message,添加该参数
  }
}

output {
  elasticsearch {
    hosts => ["10.0.0.91:9200"]
    index => "tomcat_json_log_%{+YYYY.MM.dd}"
  }
}

2)方法二:

[root@m01 conf.d]# vim java.conf 
input {
  file {
    path => "/usr/local/tomcat/logs/tomcat_access.*.log"
    type => "tomcat_access_log"
    start_position => "end"
    codec => "json"
  }
}
output {
  elasticsearch {
    hosts => ["10.0.0.91:9200"]
    index => "tomcat_json_log_%{+YYYY.MM.dd}"
  }
}

2.修改nginx的message格式为json

[root@m01 conf.d]# vim nginx.conf 
input {
  file {
    path => "/var/log/nginx/access_json.log"
    type => "nginx_access_log"
    start_position => "end"
    codec => "json"                #只加这个参数即可
  }
}
output {
  elasticsearch {
    hosts => ["10.0.0.91:9200"]
    index => "nginx_json_log_%{+YYYY.MM.dd}"
  }
}

3.尝试画饼图

二、使用logstash将日志写入redis

0.环境准备

主机 IP 部署服务
m01 10.0.0.61 nginx,logstash
redis01 10.0.0.91 ES,kibana
redis03 10.0.0.93 redis,logstash

1.安装redis



2.配置收集日志到redis

[root@m01 ~]# cat /etc/logstash/conf.d/nginx_redis.conf
input {
  file {
    path => "/var/log/nginx/access_json.log"
    type => "nginx_json_log"
    start_position => "end"
    codec => "json"
  }
  file {
    path => "/usr/local/tomcat/logs/tomcat_access.*.log"
    type => "tomcat_json_log"
    start_position => "end"
    codec => "json"
  }
}
output {
  if [type] == "nginx_json_log" {
    redis {
      host => "10.0.0.93"
      port => "6379"
      data_type => "list"
      key => "nginx_log"
      db => "0"
      password => "123"            #如果redis有密码,加上该参数
    }
  }
  if [type] == "tomcat_json_log" {
    redis {
      host => "10.0.0.93"
      port => "6379"
      data_type => "list"
      key => "tomcat_log"
      db => "1"
      password => "123"            #如果redis有密码,加上该参数
    }
  }
}

3.访问页面,查看redis里面是否有数据

[root@redis03 ~]# redis-cli 
127.0.0.1:6379> keys *
1) "nginx_log"
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> keys *
1) "tomcat_log"

#查看数据有多少条
127.0.0.1:6379[1]> LLEN tomcat_log
(integer) 8
#查看所有数据
127.0.0.1:6379[1]> LRANGE tomcat_log 0 -1

4.将redis的数据取出放到ES

[root@redis04 ~]# cat /etc/logstash/conf.d/redis_es.conf 
input {
  redis {
    host => "10.0.0.93"
    port => "6379"
    data_type => "list"
    key => "nginx_log"
    db => "0"
  }
  redis {
    host => "10.0.0.93"
    port => "6379"
    data_type => "list"
    key => "tomcat_log"
    db => "1"
  }
}

output {
  if [type] == "nginx_json_log" {
    elasticsearch {
      hosts => ["10.0.0.91:9200"]
      index => "nginx_redis_%{+YYYY.MM.dd}"
    }
  }
  if [type] == "tomcat_json_log" {
    elasticsearch {
      hosts => ["10.0.0.91:9200"]
      index => "tomcat_redis_%{+YYYY.MM.dd}"
    }
  }
}

#启动
[root@redis04 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis_es.conf

5.验证redis数据

127.0.0.1:6379> LLEN nginx_log
(integer) 0
127.0.0.1:6379> LRANGE nginx_log 0 -1
(empty list or set)
127.0.0.1:6379>

6.ES查看数据

三、Logstash配合rsyslog收集haproxy日志

1.rsyslog介绍

syslogd是Linux下的一个记录日志文件服务。从结构来说,可以理解为这个服务下面有一系列的子服务,例如mail、auth、cron、kern等等,这些子服务对外提供日志记录的功能,而当其它的程序或服务需要记录日志的时候,就可以直接调用这些子服务将日志记录到设定的地方。而配置这整个守护进程以及其子服务的地方就是/etc/syslog.conf这个文件。

2.安装rsyslog

#安装rsyslog
[root@m01 ~]# yum install -y rsyslog

3.配置rsyslog

#编辑rsyslog配置文件
[root@m01 ~]# vim /etc/rsyslog.conf
#允许使用tcp和UDP协议进行日志的转发
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
#最后面一行添加,local6对应haproxy配置文件定义的local级别,端口为Logstash的端口
local6.*     @@10.0.0.53:2222

4.安装haproxy

[root@m01 ~]# yum install -y haproxy

5.配置haproxy

#编辑haproxy配置文件
[root@m01 ~]# vim /etc/haproxy/haproxy.cfg
#global部分,用于设置全局配置参数,属于进程级的配置,通常与操作系统配置相关
global
#设置每个HAProxy进程可接受的最大并发连接数
maxconn 100000
chroot /var/lib/haproxy
#设置启动HAProxy进程的用户和组
uid 99
gid 99
daemon
#指定启动的haproxy进程的个数
nbproc 1
pidfile /var/run/haproxy.pid
#全局的日志配置,local0是日志设备,info表示日志级别。其中日志级别有err, warning, info, debug 4种。这个配置表示使用127.0.0.1上的rsyslog服务中的local0日志设备,记录日志等级为info
log 127.0.0.1 local6 info

#defaults部分,优化居多
defaults
option http-keep-alive
option  forwardfor
maxconn 100000
#设置HAProxy实例默认的运行模式,有tcp, http, health三个可选值 
mode http
#设置成功连接到一台服务器的最长等待时间,默认单位是毫秒,但也可以使用其他时间单位作后缀
timeout connect 300000ms
#设置连接客户端发送数据时最长等待时间,默认单位是毫秒,但也可以使用其他时间单位作后缀
timeout client  300000ms
#设置服务器端回应客户端数据发送的最长等待时间,默认单位是毫秒,但也可以使用其他时间单位作后缀
timeout server  300000ms

#监控信息页面
listen stats
 mode http
 bind 0.0.0.0:9999
 stats enable
 log global
 stats uri     /haproxy-status
 stats auth    haadmin:123456

#frontend web_port 定义了一个虚拟节点,访问这个就是访问haproxy
frontend web_port
        bind 0.0.0.0:80
        mode http
        #默认情况下,HAProxy日志是不记录HTTP请求的,此选项的作用是启用日志记录HTTP请求
        option httplog
        #表示使用global段中定义的日志格式
        log global
        #此选项的作用是保证后端服务器可记录客户端真实的IP
        option  forwardfor
###################ACL Setting##########################
        acl tomcat      hdr_dom(host) -i www.tomcat.com
        acl nginx       hdr_dom(host) -i www.nginx.com
###################USE ACL##############################
        use_backend     tomcat_host        if  tomcat
        use_backend     nginx_host         if  nginx
########################################################


#backend用于定义一个服务器组,根据需要可以定义多个
backend tomcat_host
        mode    http
        option  httplog
        balance source
        server web1  10.0.0.61:8080 check inter 2000 rise 3 fall 2 weight 1

backend nginx_host
        mode    http
        option  httplog
        balance source
        server web1  10.0.0.61:8081 check inter 2000 rise 3 fall 2 weight 1

check 表示启用对此后端服务器执行健康状态检查
inter 设置健康状态检查的时间间隔,单位是毫秒
rise 检查多少次认为服务器可用
fall 检查多少次认为服务器不可用
weight 设置服务器的权重,默认为1, 最大为256。 设置为0表示不参与负载均衡
backup 设置备份服务器,用于所有后端服务器全部不可用时
cookie 为指定的后端服务器设置cookie值,此处指定的值将在请求入站时被检查,第一次为此值挑选的后端服务器将在后续的请求中一直被选中,其目的在于实现持久连接的功能

6.启动服务

#启动haproxy
[root@m01 ~]# systemctl start haproxy

#启动rsyslog
[root@m01 ~]# systemctl start rsyslog

#验证端口
[root@elkstack03 ~]# netstat -lntup
tcp        0      0 0.0.0.0:9999                0.0.0.0:*                   LISTEN      9082/haproxy
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      9631/haproxy

#验证进程
[root@elkstack03 ~]# ps -ef|grep haproxy
nobody     9082      1  0 14:04 ?        00:00:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

7.由于nginx占用80所以需要修改

#修改nginx配置文件,将端口改为8081
[root@m01 ~]# vim /etc/nginx/nginx.conf

#修改tomcat配置文件,将默认站点目录改成/webapps/webdir
[root@m01 ~]# vim /usr/local/tomcat/conf/server.xml
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

     <Context path="" docBase="/usr/local/tomcat/webapps/webdir" debug="0" reloadable="false"
              crossContext="true"/>

#重启nginx
[root@elkstack03 ~]# /usr/local/nginx/sbin/nginx -s reload

#重启tomcat
[root@m01 ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@m01 ~]# /usr/local/tomcat/bin/startup.sh 

#修改本地hosts文件
10.0.0.61 www.tomcat.com
10.0.0.61 www.nginx.com

8.配置收集haproxy日志

#编辑Logstash配置文件
[root@elkstack03 conf.d]# vim haproxy.cof
input{
  syslog {
    type => "rsyslog_haproxy"
    port => "2222"
  }
}
output{
  stdout{
    codec => rubydebug
  }
}

#启动Logstash
[root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/haproxy.conf

#检查Logstash端口
[root@elkstack03 ~]# netstat -lntup|grep 2222
tcp        0      0 :::2222                     :::*                        LISTEN      9867/java
udp        0      0 :::2222                     :::*                                    9867/java

9.配置收集haproxy日志写入ES

#编辑配置文件
[root@elkstack03 conf.d]# vim haproxy.conf
input{
  syslog {
    type => "rsyslog_haproxy"
    port => "2222"
  }
}
output{
  elasticsearch {
    hosts => ["10.0.0.91:9200"]
    index =>  "rsyslog-%{+YYYY.MM.dd}"
  }
}

#启动Logstash
[root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/haproxy.conf &

10.查看数据

Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:14:52

results matching ""

    No results matching ""