日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
CentOS7單機部署ELK

一、 簡介

1.1 介紹

  ELK是三個開源工具組成,簡單解釋如下:

為振安等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及振安網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作、振安網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

  Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發(fā)現(xiàn),索引自動分片,索引副本機制,restful風(fēng)格接口,多數(shù)據(jù)源,自動搜索負(fù)載等。

  Logstash是一個完全開源的工具,它可以對你的日志進行收集、過濾,并將其存儲供以后使用(如,搜索)。

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

1.2 場景分析

  日志主要包括系統(tǒng)日志、應(yīng)用程序日志和安全日志等等。運維人員和開發(fā)人員可以通過日志了解服務(wù)器軟硬件信息、檢查配置過程中的錯誤及錯誤發(fā)生的原因。經(jīng)常分析日志可以了解服務(wù)器的負(fù)荷,性能安全性,從而及時采取措施糾正錯誤。

  通常,日志被分散的儲存不同的設(shè)備上。如果你管理數(shù)十上百臺服務(wù)器,你還在使用依次登錄每臺機器的傳統(tǒng)方法查閱日志。這樣是不是感覺很繁瑣和效率低下。當(dāng)務(wù)之急我們使用集中化的日志管理,例如:開源的syslog,將所有服務(wù)器上的日志收集匯總。

  集中化管理日志后,日志的統(tǒng)計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現(xiàn)檢索和統(tǒng)計,但是對于要求更高的查詢、排序和統(tǒng)計等要求和龐大的機器數(shù)量依然使用這樣的方法難免有點力不從心。

  這里采用開源實時日志分析ELK平臺能夠完美的解決我們上述的問題,當(dāng)然也還有別的平臺或者工具可以使用,這里只討論ELK,官方網(wǎng)站:https://www.elastic.co

二、安裝Elasticsearch

2.1 安裝jdk

# Java -version
java version
"1.8.0_121"
Java(TM) SE Runtime Environment (build
1.8
.
0_121
-
b13)
Java HotSpot(TM)
64
-
Bit Server VM (build
25.121
-
b13, mixed mode)

 2.2 安裝Elasticsearch

# tar -zxvf elasticsearch-5.6.3.tar.gz
# mv elasticsearch-5.6.3 /data/elasticsearch
# cd elasticsearch/config/
# 備份配置文件
# cp elasticsearch.yml elasticsearch.yml.bak

  編輯配置文件

# cat elasticsearch.yml | grep -v ^#
cluster.name: elk
-
application
node.name: node
-
1
path.data:
/
data
/
elasticsearch
/
data
path.logs:
/
data
/
elasticsearch
/
logs
network.host:
172.16
.
220.248
http.port:
9200
discovery.zen.ping.unicast.hosts: [
"node-1"
]
discovery.zen.minimum_master_nodes:
1

  添加elasticsearch用戶,不能使用root啟動

# groupadd -g 1008 elasticsearch
# useradd -g 1008 -u 1008 elasticsearch
# chown -R elasticsearch:elasticsearch /data/elasticsearch/

  修改sysctl.conf文件

# vim /etc/sysctl.conf
vm.max_map_count
=
262144  
# sysctl -p 

  修改/etc/security/limits.conf文件,修改打開文件句柄

*             
soft    nofile         
100000
*             
hard    nofile         
100000
*             
soft    nproc         
100000
*             
hard    nproc         
100000

  添加hosts文件

# vim /etc/hosts
172.16
.
220.248
node
-
1

  啟動

# su -s elasticsearch
# cd /data/elasticsearch/bin
# ./elasticearch &

  查看是否啟動

  簡單的curl測試

# curl http://172.16.220.248:9200

三、安裝Logstash和filebeat

  filebeat用于在各個服務(wù)器上獲取數(shù)據(jù),發(fā)送到logstash上,再由logstash處理數(shù)據(jù)。

3.1 安裝logstash

# tar -zxvf logstash-5.6.3.tar.gz
# mv logstash-5.6.3 /data/logstash

3.2 安裝filebeat

  下載filebeat并啟動,通過它來監(jiān)聽數(shù)據(jù)源文件的新增內(nèi)容經(jīng)過logstash處理后上傳到es里面

# tar -zxvf filebeat-5.6.3-linux-x86_64.tar.gz
# mv filebeat-5.6.3-linux-x86_64 /data/filebeat
# cd /data/filebeat
# cp filebeat.yml filebeat.yml.bak

  編輯filebeat.yml文件

filebeat.prospectors:
-
input_type: log
 
paths:
   
-
/
var
/
log
/
message
-
log 
# 測試本機的一個log文件
output.logstash:
 
hosts: [
"172.16.220.248:5044"
]

  啟動filebeat服務(wù)

# cd /data/filebeat
# ./filebeat &

  查看啟動,filebeat沒有監(jiān)聽端口,主要看日志和進程

# tialf logs/filebeat
# ps -ef | grep filebeat

  filebeat監(jiān)聽的文件記錄信息在/data/filebeat/data/registry

  新建一個本地文件message-log,可以取幾條本機系統(tǒng)的messages文件

3.3 啟動logstash  

  最后新建一個logstash的啟動指定test.conf配置文件,內(nèi)容如下:  

input
{
   
beats {
     
port
=
>
"5044"
   
}
}
output {
   
elasticsearch {
   
hosts
=
>
"172.16.220.248:9200"
 
}
 
stdout { codec
=
> rubydebug } 
# 這是將輸出打印在屏幕上,可以注釋掉
}  

  Logstash默認(rèn)有input、filter、output三個區(qū)域,一般最少需要配置input和output即可!

  logstash的本身默認(rèn)的logstash.yml配置文件選擇不修改即可!

  簡單測試一下logstash不指定配置文件啟動

# cd /data/filebeat/bin
# ./logstash -e 'input { stdin {} } output {stdout {} }'

  我們手動輸入 hello world,它也會輸出 hello world

  指定配置文件啟動logstash 

# ./logstash -f ../config/test.conf &

  查看5044端口和9600端口是否開啟

  等待一會后應(yīng)該會出現(xiàn)如下信息輸出,這也就是test.conf里面最后一行定義輸出到屏幕上

 四、安裝kibana 

# tar -zxvf kibana-5.6.3-linux-x86_64.tar.gz
# mv kibana-5.6.3-linux-x86_64 /data/kinbana
# cd /data/kinbana/config/
# cp kibana.yml kibana.yml.bak

  編輯kibana.yml配置文件

# vim kibana.yml
server.port:
5601
server.host:
"172.16.220.248"
elasticsearch.url:
"http://172.16.220.248:9200"

  啟動kinbana

# cd /data/kibana/bin
# ./kibana &

  查看端口

  瀏覽器登入查看

  點擊create按鈕后,然后點擊上面的discover按鈕,注意如果沒數(shù)據(jù)的話,注意看看導(dǎo)入的時間@timestamp和現(xiàn)在的時間對比一下,kibana默認(rèn)只顯示最近15分鐘的數(shù)據(jù),如果超出15分鐘請選擇適當(dāng)?shù)臅r間,從kibana可以看到messages-log里面的15條數(shù)據(jù)都正常導(dǎo)入了。這就也完成我們的實現(xiàn)的第一個效果。但是這僅僅是把流程跑通了,接下來我們需要做的事情還有更多。注意只能先導(dǎo)入數(shù)據(jù)到es后才能在kibana創(chuàng)建索引。

五、獲取Nginx access日志

  Nginx日志格式在logstash的grok里面默認(rèn)是沒有的,需要我們手動配置,可以通過http://grokdebug.herokuapp.com/ 在線工具來判斷配置是否正確。

 5.1 在nginx服務(wù)器上安裝filebeat

  服務(wù)器: 172.16.200.160  

# tar -zxvf filebeat-5.6.3-linux-x86_64.tar.gz
# mv filebeat-5.6.3-linux-x86_64 /data/filebeat
# cd /data/filebeat
# cp filebeat.yml filebeat.yml.bak

  修改filebeat配置文件

# cat filebeat.yml | grep -v ^$ | grep -v ^# | grep -v "#"
filebeat.prospectors:
- input_type: log
 
paths:
   
- /data/nginx/logs/160_access.log
   
document_type: nginx_access
output.logstash:
 
hosts: ["172.16.220.248:5044"]

  啟動filebeat

# ./filebeat &

5.2 重新配置logstash啟動配置文件

  nginx日志格式,根據(jù)業(yè)務(wù)要求,我們這做了一些修改,比如增加cookie等,修改access.log日志時間格式等,這個會在另外的博客中寫出來,會給出鏈接的。

   Nginx日志格式?? 

log_format main
               
'[$time_local] - $remote_addr:$remote_port - $upstream_addr $upstream_status $upstream_response_time - '
               
'"$request" $status $bytes_sent $request_time '
               
'"$http_referer" - "$http_user_agent" - '
               
'"$customerTag_cookie" - "$ym_cookie" - "$http_cookie" '
               
'"$http_x_forwarded_for"';  
# 這里只是我們自己的格式,各位可以根據(jù)自己要求增刪

   grok使用表達式

  可能我理解不是很到位,寫的也比較復(fù)雜,我會把匹配對應(yīng)項一一寫出來,大家可以自己理解,然后為自己的項目配置

%{SYSLOG5424SD} - %{IPV4:clientip}:%{NUMBER:clientport} - %{IPV4:hostip}:%{NUMBER:itemport} %{INT:upstream_status} %{NUMBER:response_time} - \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{INT:status} %{INT:body_bytes_sent} %{NUMBER:request_time} %{QS:url} - %{QS:user_agent} - %{QS:customerTag} - %{QS:ym_traffic_session_id} - %{QS:all_cookies} %{IPV4:realip}

  grok匹配說明

 

1 %{SYSLOG5424SD}
時間格式
 

1 %{IPV4:clientip}
獲取ip,clientip是自己命名的
 

1 %{NUMBER:clientport}
NUMBER匹配數(shù)字
 

1 %{INT:upstream_status}
INT整形
 

1 %{WORD:method}
WORD單詞
 

1 %{URIPATHPARAM:request}
獲取請求內(nèi)容request
 

1 %{QS:url}
 QS可以獲取一段字符串

  修改logstash啟動配置文件

input {
   
beats {
     
port => "5044"
   
}  
}    
filter {
   
if [type] == "nginx_access" {  
   
grok {
       
match => {"message" => "%{SYSLOG5424SD} - %{IPV4:clientip}:%{NUMBER:clientport} - %{IPV4:hostip}:%{NUMBER:itemport} %{INT:upstream_status} %{NUMBER:response_time} - \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{INT:status} %{INT:body_bytes_sent} %{NUMBER:request_time} %{QS:url} - %{QS:user_agent} - %{QS:customerTag} - %{QS:ym_traffic_session_id} - %{QS:all_cookies} %{IPV4:realip}"}
     
}
        
   
mutate {
       
remove_field => "message"  # 把message字段去掉,它會將上面單項獲取的信息做個匯總,這樣就重復(fù)了
   
}  
 
}  
}  
output {
   
elasticsearch {
   
hosts => "172.16.220.248:9200"
 
}
#stdout { codec => rubydebug }
}

  測試一下配置文件

./logstash -t -f ../config/logstash.conf

    重啟logstash

  不出問題elasticsearch 和kibana中就會有數(shù)據(jù)了


名稱欄目:CentOS7單機部署ELK
文章地址:http://www.5511xx.com/article/coepppj.html