ELK日志分析服務搭建


本實驗所用軟件包下載地址:鏈接:https://pan.baidu.com/s/1h4q8tL5fJ8TqcCzhHwAVpg 提取碼:8oaf
使用unzip解壓(yum install unzip -y)

一、ELK簡介

ELK是三個開源軟件的縮寫,分別是:Elasticsearch , Logstash, Kibana , 新增了一個 FileBeat,它是一個輕量級的日志收集處理工具(Agent),Filebeat 占用資源少,適合於在各個服務器上搜集日志后傳輸給 Logstash,官方也推薦此工具。

1.Elasticsearch 是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful 風格接口,多數據源,自動搜索負載等。

2.Logstash 主要是用來日志的搜集、分析、過濾日志的工具,支持大量的數據獲取方式。一般工作方式為 c/s 架構,client 端安裝在需要收集日志的主機上,server 端負責將收到的各節點日志進行過濾、修改等操作在一並發往 elasticsearch 上去。

3.Kibana 也是一個開源和免費的工具,Kibana 可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日志。

4.Filebeat 隸屬於 Beats。目前 Beats 包含四種工具:

Packetbeat #搜集網絡流量數據
Topbeat    #搜集系統、進程和文件系統級別的 CPU 和內存使用情況等數據
Filebeat   #搜集文件數據
Winlogbeat #搜集 Windows 事件日志數據 

二、實驗部署

業務請求到達nginx;nginx響應請求,並在access.log文件中增加訪問記錄;
FileBeat搜集新增的日志,通過LogStash的5044端口上傳日志;
LogStash將日志信息通過本機9200端口傳到Elasticsearch;
搜索日志的用戶通過瀏覽器訪問Kibana,服務器端口是5601
Kibana通過9200端口訪問Elasticsearch。

1.實驗環境准備
單節點ELK:elk服務端:10.0.0.201;nginx客戶端:10.0.0.202

(1)配置yum源(兩台機器)

wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
#關閉防火牆:systemctl stop(disable) firewalld
#關閉 SELinux:SELINUX=disabled

2.ELK-server服務端部署
(1)安裝軟件

#創建軟件存放目錄,並將elk-server.zip壓縮包上傳
mkdir /elk;cd /elk
#解壓縮,並拷貝到/usr/local/目錄下
tar -xf elasticsearch-6.2.3.tar.gz
tar -xf logstash-6.2.3.tar.gz 
tar -xf kibana-6.2.3-linux-x86_64.tar.gz
cp -a elasticsearch-6.2.3 logstash-6.2.3 kibana-6.2.3-linux-x86_64 /usr/local
tar -xf jdk-8u261-linux-x64.tar.gz
#cp -a jdk1.8.0_261 /usr/local/jdk1.8

(2)安裝jdk

#安裝gcc
yum -y install gcc

#配置jdk的環境變量
#vim /etc/profile
#添加:
export JAVA_HOME=/usr/local/jdk1.8
export JAVA_BIN=/usr/local/jdk1.8/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#source /etc/profile

(3)配置Elasticsearch

#新建elasticsearch用戶並使用該啟動啟動
useradd elasticsearch
chown -R elasticsearch.elasticsearch /usr/local/elasticsearch-6.2.3/
su - elasticsearch
$ cd /usr/local/elasticsearch-6.2.3/
$ ./bin/elasticsearch -d
#查看進程是否啟動成功,需要等待幾分鍾
netstat -anpt|grep :9200

(4)配置logstash
Logstash 收集 nginx 日志之使用 grok 過濾插件解析日志,grok 作為一個 logstash 的過濾插件,支持根據模式解析文本日志行,拆成字段。

grok的正則匹配

#cd /usr/local/logstash-6.2.3/
vim vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns
#添加:
WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request}
HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{QS:referer} %{QS:agent}
%{QS:xforward}

創建logstash配置文件

#vim /usr/local/logstash-6.2.3/default.conf
input {
    beats {
        port => "5044"
    }
}
#數據過濾
filter {
    grok {
        match => { "message" => "%{NGINXACCESS}" }
     }
    geoip {
       #nginx 客戶端 ip
       source => "10.0.0.202"
     }
}
#輸出配置為本機的 9200 端口,這是 ElasticSerach 服務的監聽端口
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
    }
}
#進入/usr/local/logstash-6.2.3目錄下
#后台啟動logstash:
nohup bin/logstash -f default.conf &
#查看啟動日志
tail -f nohup.out
#如果報錯“Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000f5550000, 178978816, 0) failed; error='Cannot allocate memory' (errno=12)”
#原因:服務器內存不夠;解決辦法:vim config/jvm.options
#將-Xms1g和-Xmx1g改為:
-Xms256m
-Xmx256m

(5)配置kibana

#編輯配置文件
vim /usr/local/kibana-6.2.3-linux-x86_64/config/kibana.yml
#修改: #server.host: "localhost" 為 server.host: "本機IP"

#進入kibana目錄
cd /usr/local/kibana-6.2.3-linux-x86_64/
#啟動並測試:
nohup bin/kibana &
#瀏覽器訪問:
10.0.0.201:5601

3.Nginx客戶端配置

#安裝依賴
yum install -y gcc* pcre-devel opensll openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel

#將源碼包上傳到nginx主機上,並創建nginx用戶
useradd -r -s /sbin/nologin nginx
#解壓nginx並安裝
#cd nginx-1.17.10/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

#上傳filebeat軟件包並解壓到/usr/local

#編輯配置文件
vim /usr/local/filebeat-6.2.3-linux-x86_64/filebeat.yml
#修改:
enable:false #修改為 true
paths:/var/log/*.log #修改為/var/log/nginx/*.log
#output.elasticsearch: #將此行注釋掉
#hosts: ["localhost:9200"] #將此行注釋掉
output.logstash: #取消此行注釋
hosts: ["10.0.0.201:5044"] #取消此行注釋並修改 IP 地址為 ELK 服務器地址

#切換到/usr/local/ filebeat-6.2.3-linux-x86_64目錄下
cd /usr/local/filebeat-6.2.3-linux-x86_64
#啟動:
nohup ./filebeat -e -c filebeat.yml &
#查看日志:
tail -f nohup.out

#驗證:多訪問幾次nginx,然后訪問kibana進行設置
#步驟:
	#點擊左上角的Discoverwe 
	#輸入 logstash-*,點擊next step
	#選擇 time filter,再點擊 create index pattern(創建索引模式)


免責聲明!

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



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