一、修改kibana收集的的日志格式
1.修改tomcat的message格式为json
1)方法一:
[root@m01 conf.d]
input {
file {
path => "/usr/local/tomcat/logs/tomcat_access.*.log"
type => "tomcat_access_log"
start_position => "end"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => ["10.0.0.91:9200"]
index => "tomcat_json_log_%{+YYYY.MM.dd}"
}
}
2)方法二:
[root@m01 conf.d]
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]
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 ~]
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"
}
}
if [type] == "tomcat_json_log" {
redis {
host => "10.0.0.93"
port => "6379"
data_type => "list"
key => "tomcat_log"
db => "1"
password => "123"
}
}
}
3.访问页面,查看redis里面是否有数据
[root@redis03 ~]
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 ~]
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 ~]
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
[root@m01 ~]
3.配置rsyslog
[root@m01 ~]
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
local6.* @@10.0.0.53:2222
4.安装haproxy
[root@m01 ~]
5.配置haproxy
[root@m01 ~]
global
maxconn 100000
chroot /var/lib/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /var/run/haproxy.pid
log 127.0.0.1 local6 info
defaults
option http-keep-alive
option forwardfor
maxconn 100000
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
bind 0.0.0.0:80
mode http
option httplog
log global
option forwardfor
acl tomcat hdr_dom(host) -i www.tomcat.com
acl nginx hdr_dom(host) -i www.nginx.com
use_backend tomcat_host if tomcat
use_backend nginx_host if nginx
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.启动服务
[root@m01 ~]
[root@m01 ~]
[root@elkstack03 ~]
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 ~]
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所以需要修改
[root@m01 ~]
[root@m01 ~]
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/usr/local/tomcat/webapps/webdir" debug="0" reloadable="false"
crossContext="true"/>
[root@elkstack03 ~]
[root@m01 ~]
[root@m01 ~]
10.0.0.61 www.tomcat.com
10.0.0.61 www.nginx.com
8.配置收集haproxy日志
[root@elkstack03 conf.d]
input{
syslog {
type => "rsyslog_haproxy"
port => "2222"
}
}
output{
stdout{
codec => rubydebug
}
}
[root@elkstack03 conf.d]
[root@elkstack03 ~]
tcp 0 0 :::2222 :::* LISTEN 9867/java
udp 0 0 :::2222 :::* 9867/java
9.配置收集haproxy日志写入ES
[root@elkstack03 conf.d]
input{
syslog {
type => "rsyslog_haproxy"
port => "2222"
}
}
output{
elasticsearch {
hosts => ["10.0.0.91:9200"]
index => "rsyslog-%{+YYYY.MM.dd}"
}
}
[root@elkstack03 conf.d]
10.查看数据