syslog-ng收集日志+ELK平台搭建教程


syslog-ng部署:

  用於接收交換機輸出的日志。

  syslog-ng安裝很簡單,可以順便搜一下,文章有很多。我是yum直接安裝的。

  syslog-ng配置:

vi /etc/syslog-ng/syslog-ng.conf

  配置文件需要添加source 和destination

#設置接收日志的協議和端口,localhost填寫本機IP地址
source s_remote {
    tcp(ip(localhost) port(514));
    udp(ip(localhost) port(514));
}; 

#收到的日志存放本地一份(elk搭建存不存本地都無所謂)
destination d_file 
    { file("/netlog/logs_${YEAR}-${MONTH}-${DAY}"); 
};

#收到的日志交給logstash處理,定義傳輸協議udp,端口5144(這里對應logstash的input)
destination d_logstash { udp ("10.120.248.132" port(5144)); };

#多個目的,需要填寫進來,分號隔開
log { source(s_remote); destination(d_file); destination(d_logstash); };

  交換機上配置好log服務器地址(部署syslog-ng、ELK的服務器IP地址)即可。

ELK搭建(非集群):

  ELK分別是Elasticsearch、Logstash、Kibana三個開源框架縮寫。

  Elasticsearch是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。

  Logstash 主要是用來日志的搜集、分析、過濾日志的工具,支持大量的數據獲取方式。

  Kibana 提供日志分析的 Web 界面,幫助匯總、分析和搜索重要數據日志。

1. 下載ELK(版本保持一致!):

  這里選擇下載了6.3.0版本。

  Elasticsearch下載: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz 

  Kibana下載: https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-linux-x86_64.tar.gz

  Logstash下載: https://artifacts.elastic.co/downloads/logstash/logstash-6.3.0.tar.gz 

  下載完成,使用rz命令上傳至centos7虛機,放在/home/目錄下。

2. 解壓

cd /home
tar -zxvf elasticsearch-6.3.0.tar.gz 
tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz
tar -zxvf logstash-6.3.0.tar.gz

3. java環境搭建

  推薦使用jdk1.8,為了方便安裝了java-1.8.0-openjdk,安裝方法見鏈接。

  https://www.cnblogs.com/sitongyan/p/11262375.html

4. 部署elasticsearch,ELK的包解壓修改配置文件啟動即可使用,不需要安裝。

  修改配置文件

vi /home/elasticsearch-6.3.0/config/elasticsearch.yml
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0           ##服務器ip 本機
#
# Set a custom port for HTTP:
#
http.port: 9200                 ##服務端口
#

  啟動elasticsearch:

/home/elasticsearch-6.3.0/bin/elasticsearch   #命令窗運行

/home/elasticsearch-6.3.0/bin/elasticsearch  -d  #后台線程運行

  關閉elasticsearch:

ps -ef | grep elastic                    #后台線程關閉
kill -9 4442                             ##pid 4442為查處線程的pid 

  Elasticsearch啟動常見問題解決

  驗證elasticsearch啟動:

5. 安裝kibana

  修改配置文件:

vi /home/kibana-6.3.0-linux-x86_64/config/kibana.yml
server.port: 5601       ##服務端口
server.host: "0.0.0.0"  ##服務器ip  本機
 
elasticsearch.url: "http://localhost:9200" ##elasticsearch服務地址 與elasticsearch對應

  啟動kibana:

/home/kibana-6.3.0-linux-x86_64/bin/kibana       #命令窗啟動

nohup ./kibana-6.3.0-linux-x86_64/bin/kibana &   #后台線程啟動

  關閉kibana:

ps -ef | grep kibana                    #后台線程關閉
kill -9 4525                             ##pid 4525 為查處線程的pid 
  備注:常見問題多為 端口占用,以及目錄未授權,需要同elasticsearch 使用目錄運行執行的用戶去執行 未配置則為root用戶

  驗證kibana啟動:

6. 安裝logstash

  新建配置文件:

vi /home/logstash-6.3.0/config/logback-es.conf

0.0.0.0填寫本地IP地址,input標簽表示監聽udp協議的5144端口(此端口為syslog-ng設置的吐出日志的目標端口),input日志來源有很多種,udp是其中一種。

其他常見input標簽使用。

input {
    udp {
        host => "0.0.0.0" port => 5144 } } output { elasticsearch { hosts => ["localhost:9200"] index => "switch-log-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }

   備注:上述文件復制時必須去除多余空格,保持yml文件規范。

  啟動logstash:

/home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf         ##命令窗形式

nohup /home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf &  ##后台線程形式

  關閉logstash:

ps -ef | grep logstash                    #后台線程關閉
kill -9 4617                              ##pid 4617 為查處線程的pid 

7. 驗證ELK

  查看elasticsearch索引,logstash收集到日志后,會按照配置文件自動創建索引,並且根據時間YYYY.MM.dd切割數據建立一個一個的索引

curl http://10.120.248.132:9200/_cat/indices?v   ##查看自動創建的索引,能查看到說明elasticsearch存儲了從logstash output來的數據。
curl -XDELETE http://10.120.248.132:9200/索引名   ##清空無用索引

  驗證kibana日志展示是否正常:新建立的索引,kibana需要新建一下關聯。

  Create Index Pattern創建索引

  選擇時間戳,創建完成。

  然后在Discover中查看日志。如果看不見日志,注意右上角的時間段選擇,選擇查看的時間長一些即可看見日志。

  注意:右上角的選擇查看日志的時間段(例如today)是參照按照當前瀏覽器時間。例如,需要查看的日志索引為7月1日,然而今天實際是7月2日,選擇區間為today就沒有日志,因為today代表當前時間7月2日,7月1日的日志中是不包含7月2日的。

 8. kibana添加登錄認證

  elk驗證完成之后,會發現kibana不需要用戶登錄直接即可訪問,這樣很不安全,需要添加登錄認證。

  可以采用Nginx代理完成認證操作。

  Linux環境安裝Nginx步驟

  1.安裝Nginx完成之后,安裝Apache密碼生成工具:

yum install httpd-tools

  2.生成密碼文件:

mkdir -p /etc/nginx/passwd
htpasswd -c -b /etc/nginx/passwd/kibana.passwd user ******     ##-c表示創建一個加密文件,-b表示在htpassswd命令行中一並輸入用戶名和密碼而不是根據提示輸入密碼。

  3.配置Nginx:

vi /usr/local/webserver/nginx/conf/nginx.conf
    server {
        listen       5601;   ##監聽用戶訪問的5601端口
        server_name  localhost:5601;    ##本機IP:port

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            auth_basic "kibana login auth";
            auth_basic_user_file /usr/local/test/passwd/kibana.passwd;    ##存儲用戶密碼文件
            proxy_pass http://localhost:5602;    #因為Nginx代理了kibana的5601端口,所以kibana需要換一個端口,我換成了5602,注意kibana的配置文件也需要改成5602端口
            proxy_redirect off;
        }

        #error_page  404              /404.html;

  4.修改Kibana配置文件:

vi /home/kibana-6.3.0-linux-x86_64/config/kibana.yml
# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5602

  5.重啟Kibana服務,配置文件生效:

ps -ef | grep kibana
kii -9 進程號
cd /home/
nohup ./kibana-6.3.0-linux-x86_64/bin/kibana & ##后台啟動

   6.訪問kibana

  

  后續會補充logstash時間戳問題的處理辦法。











免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM