1. 程式人生 > 實用技巧 >使用logstash配置rsyslog收集haproxy日誌

使用logstash配置rsyslog收集haproxy日誌

一,使用logstash配置rsyslog收集haproxy日誌

1.rsyslog介紹

在centos 6及之前的版本叫做syslog,centos 7開始叫做rsyslog,根據官方的介紹,rsyslog(2013年版本)可以達到每秒轉發百萬條日誌的級別,rsyslog是日誌收集處理工具

它提供了高效能,出色的安全性和模組化設計。儘管rsyslog最初是常規的syslogd,但已發展成為一種瑞士軍刀式的記錄工具,能夠接受來自各種來源的輸入,並將其轉換,然後輸出到不同的目的地。

當應用有限的處理時,RSYSLOG每秒可以將超過一百萬的訊息傳遞到本地目的地。即使在遠端目的地和更精細的處理下,效能通常也被認為是“驚人的”。

2.安裝配置rsyslog
#安裝rsyslog
[root@lb01 ~]# yum install -y rsyslog

#編輯rsyslog配置檔案
[root@lb01 ~]# vim /etc/rsyslog.conf

#開啟支援udp協議
$ModLoad imudp
$UDPServerRun 514

#開啟支援tcp協議
$ModLoad imtcp
$InputTCPServerRun 514

#最後面一行新增,local6對應haproxy配置檔案定義的local級別,埠為Logstash的埠
local6.*     @@10.0.0.53:2222
3.安裝並配置haproxy
[root@lb01]# vim /etc/haproxy/haproxy.cfg 
#全域性配置
global

#最大連線數
maxconn 100000

#庫檔案許可權目錄
chroot /var/lib/haproxy

#使用者和組
uid 99
gid 99

#後臺啟動
daemon

#指定啟動程序數量
nbproc 1

#pid檔案
pidfile /var/run/haproxy.pid

#定義日誌,與rsyslog中的配置對應
log 127.0.0.1 local6 info

#預設配置
defaults

#開啟長連線
option  http-keep-alive

#獲取使用者真實IP
option  forwardfor

#最大連線數
maxconn 100000

#執行模式
mode http
timeout connect 300000ms
timeout client  300000ms
timeout server  300000ms

#監聽狀態
listen status

#執行模式
mode http

#監聽地址:監聽埠
bind 0.0.0.0:9999

#狀態 啟動
stats enable

#全域性日誌
log global

#狀態檢查頁面的地址
stats uri     /haproxy-status

#狀態檢查頁面登入的使用者名稱和密碼
stats auth    haadmin:123456

#frontend web_port
frontend web_port
        bind 0.0.0.0:80
        mode http
        option httplog
        log global
        option  forwardfor
###################ACL Setting##########################
        acl tomcat     hdr_dom(host) -i linux.tomcat.com
        acl nginx      hdr_dom(host) -i linux.nginx.com
###################USE ACL##############################
        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.7:8080 check inter 2000 rise 3 fall 2 weight 1

backend nginx_host
        mode    http
        option  httplog
        balance source
        server web1  10.0.0.7:80 check inter 2000 rise 3 fall 2 weight 1
# 註釋:
	check:檢查健康狀態
	inter:檢查狀態的間隔時間
	rise:檢查次數
	fall:檢查過程中錯誤次數
	weight:權重
圖解

4.啟動服務
[root@lb01 ~]# systemctl start haproxy.service 
[root@lb01 ~]# systemctl start rsyslog

# 檢查啟動
[root@lb01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9999            0.0.0.0:*               LISTEN      8060/haproxy               
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8060/haproxy              
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      8028/rsyslogd               
tcp6       0      0 :::514                  :::*                    LISTEN      8028/rsyslogd 
5.配置hosts測試
10.0.0.4 linux.tomcat.com linux.nginx.com

# 分別訪問
	linux.tomcat.com  # 代理頁面
	linux.nginx.com   # 代理頁面
        http://linux.tomcat.com:9999/haproxy-status  # 代理服務狀態頁面
6.配置logstash收集haproxy日誌

1)配置收集到標準輸出

[root@redis01 ~]# vim /etc/logstash/conf.d/haproxy_stdout.conf
input {
  syslog {
    port => "2222"
  }
}

output {
  stdout {}
}

2)配置收集到ES

[root@redis01 ~]# vim /etc/logstash/conf.d/haproxy_es.conf
input {
  syslog {
    port => "2222"
  }
}

output {
  elasticsearch {
    hosts => ["10.0.0.71:9200"]
    index => "haproxy_es_%{+YYYY-MM-dd}"
  }
}