中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ELK 日志服務器安裝部署

發布時間:2020-04-23 18:05:20 來源:網絡 閱讀:16738 作者:哈哈怪1111 欄目:建站服務器



來自隊員 諄諄 擬寫

簡單介紹:

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

Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。

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

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

場景分析:

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

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

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

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

截止目前elk官網提供最新穩定版本為5.4.0

需要實現效果:

1、系統messages日志通過本地beat方式(數據不做任何處理)導入到elasticsearch中,最后通過kibana可以查詢。

2、Apache訪問日志通過遠程beat方式(數據經過處理)導入到elasticsearch中,通過kibana可以搜索日志中任何一個字段展示,也可以組合模糊查詢索。 也就是說將apache日志按json格式存儲到elasticsearch中。

3、不同客戶端的Nginx訪問日志、Apache訪問日志、系統日志均通過不同的匹配條件正則處理導入到elasticsearch中。Nginx和系統日志需要編寫簡單對應的正則表達式。

主要注意事項:

1、Elk版本號保持一致。

2、所有節點操作系統版本最好保持一致,盡可能使用目前centos7.3穩定版本。Elk三個節點的配置需要比其它節點都要高一點,為2C4G,其它均為2C2G。內存太低這都是我踩過的坑。要求所有節點均能通外網,需要安裝軟件包。

3、關閉防火墻和selinux。

4、elk為了統一都使用tar包安裝所有軟件。用yum安裝特別是logstash會遇到很多坑。

5、搭建過程不難,難的是各個項目互相調試,難的是elk的高級使用方法。

說明:

本文目的只帶你入門,至于elk更高級的應用和使用方法請查看官網或者其它技術文檔。這里把所有的應用都單獨分開部署是為了以后部署到docker容器中。當然你也可以都部署在一臺服務器上。

詳細信息:

IP地址主機名用途安裝軟件
192.168.2.25apache客戶端httpd、filebeat
192.168.2.26nginx客戶端nginx、filebeat
192.168.2.27logstash日志分析處理logstash、filebeat
192.168.2.28elasticsearch存儲數據elasticsearch
192.168.2.30kibana查詢數據kibana

安裝步驟:

1、Elk三個節點安裝jdk,jdk可以去oracle官方網站下載,版本號可以和我的不一樣

點擊(此處)折疊或打開

  1. rpm -ivh jdk-8u102-linux-x64.rpm

ELK 日志服務器安裝部署

2、安裝elasticsearch節點

點擊(此處)折疊或打開

  1. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz


    1. tar zxvf elasticsearch-5.4.0.tar.gz


    1. mv elasticsearch-5.4.0 /usr/local/elasticsearch


    1. cd /usr/local/elasticsearch/config


    1. 備份elasticsearch默認配置文件,以防修改出錯


    1. cp elasticsearch.yml elasticsearch.yml.default

編輯后如下:

ELK 日志服務器安裝部署

添加elasticsearch用戶,tar包啟動必須使用普通用戶運行

點擊(此處)折疊或打開

  1. useradd elasticsearch

  2. chown -R elasticsearch:elasticsearch /usr/local/elasticsearch

打開sysctl.conf文件,添加如下內容:

點擊(此處)折疊或打開

  1. vm.max_map_count = 655360

  2. sysctl -p /etc/sysctl.conf

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

點擊(此處)折疊或打開

  1. * soft nofile 65536

  2. * hard nofile 65536

  3. * soft nproc 65536

  4. * hard nproc 65536

  5. su – elasticsearch

  6. cd /usr/local/elasticsearch

  7. bin/elasticsearch

ELK 日志服務器安裝部署

第一次啟動需要一些時間,因為需要做一些初始化動作,如果沒啟動成功請查系elasticsearch的相關日志解決。注意上面只是前臺啟動調試,在后臺需要加&,需要重新啟動。

查看端口是否開啟

ELK 日志服務器安裝部署

curl簡單的測試

ELK 日志服務器安裝部署

3、安裝logstash節點

點擊(此處)折疊或打開

  1. wget https://artifacts.elastic.co/downloads/logstash/logstash-5.4.0.tar.gz

  2. tar zxvf logstash-5.4.0.tar.gz

  3. mv logstash-5.4.0 /usr/local/logstash

在logstash上面下載filebeat并啟動,通過它來監聽數據源文件的新增內容經過logstash處理后上傳到es里面。

點擊(此處)折疊或打開

  1. wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.0-linux-x86_64.tar.gz

  2. tar zxvf filebeat-5.4.0-linux-x86_64.tar.gz

  3. mv filebeat-5.4.0-linux-x86_64 /usr/local/filebeat

  4. cd /usr/local/filebeat

  5. cp filebeat.yml filebeat.yml.default

編輯filebeat.yml文件,內容如下:

ELK 日志服務器安裝部署

啟動filebeat服務

點擊(此處)折疊或打開

  1. cd /usr/local/filebeat

  2. ./filebeat &

注意filebeat沒有監聽端口,主要看日志和進程

ELK 日志服務器安裝部署

ELK 日志服務器安裝部署

新建一個本地文件messages-log,可以取幾條本機系統的messages文件,內容如下:

ELK 日志服務器安裝部署

注意filebeat監聽的文件記錄信息在/usr/local/filebeat/data/registry

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

ELK 日志服務器安裝部署

Logstash默認有input、filter、output三個區域,一般最少需要配置input和output即可!

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

cd /usr/local/logstash

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

點擊(此處)折疊或打開

  1. bin/logstash -e ‘input { stdin { } } output { stdout {} }’

ELK 日志服務器安裝部署

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

然后指定配置文件test.conf啟動,注意這是在前臺啟動,方便調試

ELK 日志服務器安裝部署

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

ELK 日志服務器安裝部署

等待一會后應該會出現如下信息輸出,這也就是test.conf里面最后一行定義輸出到屏幕上。
ELK 日志服務器安裝部署

ELK 日志服務器安裝部署

但是配置文件中也輸入到elasticsearch當中,我們驗證一下:

注意下圖只截了一條數據,如果想看完整的數據,我們用kibana查看。

ELK 日志服務器安裝部署

4、安裝kibana節點

點擊(此處)折疊或打開

  1. wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.0-linux-x86_64.tar.gz

  2. tar zxvf kibana-5.4.0-linux-x86_64.tar.gz

  3. mv kibana-5.4.0-linux-x86_64 /usr/local/kibana

  4. cd /usr/local/kibana/config

  5. cp kibana.yml kibana.yml.default

編輯kibana.yml配置文件

ELK 日志服務器安裝部署

啟動kibana服務

點擊(此處)折疊或打開

  1. bin/kibana

ELK 日志服務器安裝部署

查看端口是否開啟

ELK 日志服務器安裝部署

打開瀏覽器輸入http://192.168.2.30:5601

ELK 日志服務器安裝部署

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

 

ELK 日志服務器安裝部署

現在需要實現第二個效果,我們首先清除elasticsearch中的數據,其實刪不刪除無所謂,這里只是為了演示一下es中數據存儲的位置。

rm -rf /usr/local/elasticsearch/data/nodes

關閉elasticsearch服務然后重新啟動,剛剛刪除的nodes目錄又會重新被初始化創建,再次刷新kibana頁面的discover按鈕,把時間軸修改成最近5年的數據,確實報找不到數據了。

ELK 日志服務器安裝部署

5、安裝apache節點,為了簡單測試我就直接yum安裝

點擊(此處)折疊或打開

  1. yum install httpd -y

  2. systemctl start httpd

用瀏覽器訪問http://192.168.2.25出現apache主界面,查看日志顯示如下,為了方便演示我這里只取6條數據,4條狀態碼為“200”,一條“403”,一條“404”,現在我們需要將這幾條數據也通過logstash導入到elasticsearch中,然后通過kibana查詢。

ELK 日志服務器安裝部署

apache節點作為客戶端安裝filebeat

安裝步驟參考上面

配置文件如下所示:

ELK 日志服務器安裝部署

啟動filebeat服務

點擊(此處)折疊或打開

  1. ./filebeat &

停止logstash服務,然后重新指定一個test02.conf配置文件,多了一個filter區域,這里就是按照grok正則匹配apache日志,將日志中的每一個字段按json格式導入,內容如下:

ELK 日志服務器安裝部署

上圖中的的%{COMBINEDAPACHELOG}正則是默認logstash自帶的,具體位置參考如下:

/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.0.2/patterns/grok-patterns

ELK 日志服務器安裝部署

上圖中grok-patterns文件里面有兩處COMMONAPACHELOG參數,上面一個是COMMONAPACHELOG參數,是apache作為nginx后端服務器使用的日志格式,而下面一個COMBINEDAPACHELOG參數是直接調用上面COMMONAPACHELOG的參數再加兩個參數作為web服務器使用的日志格式,這里我將apache作為web服務器使用,所以用COMBINEDAPACHELOG參數即可!如果是作為nginx后端的web服務器使用就用COMMONAPACHELOG參數即可!每個參數里面格式都是以冒號分割,前面是grok-pattrens中定義的變量,后面可以自定義變量的名稱,每個%代表一個匹配的參數

啟動logstash前檢查配置文件test02.conf是否有語法錯誤

ELK 日志服務器安裝部署

正式啟動logstash,這里因為數據比較多,就只截取一條數據的圖
ELK 日志服務器安裝部署

ELK 日志服務器安裝部署

從上圖中我們可以看到已經將apache日志的每個字段按json格式導入到elasticsearch中,另外還多了一些字段,比如最讓人弄混淆的是timestamp和@timestamp這兩個,前者就是apache的訪問時間,后者你可以理解為logstash處理的時間,比我們北京時間晚8小時,我覺得這個時間基本很少使用,我們再從kibana里查詢數據條數的準確性,6hits表示有6條數據,跟我們上面access_log里面的數量正好對上。

ELK 日志服務器安裝部署

 

點擊任意一條數據的箭頭,然后點擊json,我們看到apache日志的所有字段都已經按照json格式存儲,比如請求、狀態碼、請求大小等等。

ELK 日志服務器安裝部署

試一試模糊搜索,搜索某一訪問時間內狀態碼為404

ELK 日志服務器安裝部署

搜索狀態碼大于400小于499

ELK 日志服務器安裝部署

 

從上圖我們基本知道當搜索條件變得越來越嚴謹的時候,我們唯一的方法就是將我們的數據按字段拆分存儲到elasticsearch里面。這樣搜索后就是我們需要的內容。這基本完成了我們要實現的第二個效果。

接著往下走,我們需要將apache、nginx、系統日志根據不同的日志格式存儲到elasticsearch里面,首先每臺機器都需要收集系統日志、然后根據不同的業務收集不同業務的服務器日志。這里apache收集apache和系統日志、nginx也收集nginx和系統日志。

6、安裝nginx節點,nginx作為前端反向代理服務器使用

點擊(此處)折疊或打開

  1. .  yum install epel-release -y

  2. .  yum install nginx -y

首先我們看一下nginx默認的日志格式

ELK 日志服務器安裝部署

一般我們會在日志后面增加三個轉發參數,后端服務器返回的地址、后端程序返回狀態碼、后端程序響應時間

ELK 日志服務器安裝部署

注意nginx日志格式在logstash的grok里面默認是沒有的,但是和apache一樣基本都是作為web服務器使用,很多字段參數都可以共用,這里直接在grok-patterns文件增加一個COMMONNGINX參數

COMMONNGINXLOG %{COMBINEDAPACHELOG} %{QS:x_forwarded_for} (?:%{HOSTPORT1:upstream_addr}|-) (%{STATUS:upstream_status}|-) (%{BASE16FLOAT:upstream_response_time}|-)

ELK 日志服務器安裝部署

前面到$http_x_forwarded_for參數可以直接調用apache的,后面四個自己定義,注意冒號前面的變量一定要定義,比如HOSTPORT1和STATUS就是logstash默認沒有的變量名,所以我們需要用正則匹配,在grok-patterns文件的上面加上如下內容:

ELK 日志服務器安裝部署

保存退出,然后直接調用COMMONNGINXLOG參數即可!

現在到了定義系統日志了,雖然默認里面有但是不能很好的滿足我們的需求,我們手動編寫一個正則添加到grok-patterns文件里面

SYSLOG %{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}

當然也可借助于Grok Debugger或者Grok Comstructor工具來測試。添加自定義正則的時候,在Grok Debugger中可以勾選“Add custom patterns”。

現在需要調試一下nginx轉發請求到apache服務器處理。也就是nginx是前端反向代理,apache是后端服務器。

編輯nginx主配置文件nginx.conf,將location /修改為如下所示:

ELK 日志服務器安裝部署

啟動nginx服務

點擊(此處)折疊或打開

  1. systemctl start nginx

nginx上安裝filebeat(步驟參考上面即可)

nginx的filebeat配置文件如下:

ELK 日志服務器安裝部署

nginx的新建messages_log文件內容如下:

ELK 日志服務器安裝部署

修改apache主配置文件httpd.conf文件,將日志的格式修改一下,因為現在是作為后端web服務器使用,不需要記錄agent等信息。

將這行注釋去掉

CustomLog “logs/access_log” common

將這行前加上注釋

CustomLog “logs/access_log” combined

在apache服務器默認根目錄下面/var/www/html目錄下創建一個test.html文件,內容隨便寫點什么都行:

ELK 日志服務器安裝部署

重啟apache服務

Systemctl restart httpd

訪問nginx服務

nginx日志出現如下界面說明正常

點擊(此處)折疊或打開

  1. 192.168.9.106 – – [10/May/2017:09:14:28 +0800] “GET /test.html HTTP/1.1” 200 14 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36” “-” 192.168.2.25:80 200 0.002

  2. 192.168.9.106 – – [10/May/2017:09:14:28 +0800] “GET /favicon.ico HTTP/1.1” 404 209 “http://192.168.2.26/test.html” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36” “-” 192.168.2.25:80 404 0.001

apache日志出現如下界面說明正常

點擊(此處)折疊或打開

  1. 192.168.2.26 – – [10/May/2017:09:14:31 +0800] “GET /test.html HTTP/1.0” 200 14

  2. 192.168.2.26 – – [10/May/2017:09:14:31 +0800] “GET /favicon.ico HTTP/1.0” 404 209

apache的filebeat配置文件如下:

ELK 日志服務器安裝部署

apache的新建messages_log文件內容如下:

ELK 日志服務器安裝部署

這里所有的配置和測試文件都準備齊了,nginx和apache服務器日志各2條數據,系統日志各2條,也就是8條數據。

最后就是我們的重頭戲了,logstash的test03.conf配置文件如下:

ELK 日志服務器安裝部署

注意這次apache的正則匹配被我修改了,因為是作為后端服務器使用,為了驗證數據導入的正確性,清除elastucsearch中的數據和nginx、apache客戶端上filebeat導入的記錄點信息,注意清除記錄點信息要先停止filebeat服務,然后再刪除registry文件再啟動filebeat服務。elasticsearch清除數據參考上面步驟。

啟動logstash,只截圖一個系統的訪問日志導入,可以看到系統日志也按日志格式字段導入到elasticsearch中存儲了。

ELK 日志服務器安裝部署

ELK 日志服務器安裝部署

從kibana可以看到數據正好是8條

ELK 日志服務器安裝部署

我們隨便看一條系統日志導入后的json格式,主要按照SYSLOG正則分成了4個字段顯示,syslog_timestamp、syslog_hostname、syslog_program、syslog_message

 

ELK 日志服務器安裝部署

我們再看一下nginx日志導入后的json格式,這里nginx的字段就不一一解釋了。

ELK 日志服務器安裝部署

這樣就實現了我們最開始需要展示的三個效果,當然這也只是很基礎的搭建和配置,一些關于ELK更高級的使用方法請查詢官方文檔。

常見問題匯總:

1、監聽文件新增內容重復導入

一般是直接編輯文件新增內容導致,正確的做法是echo “xxx” >> filename

2、Kibana里面查詢沒數據但是elasticsearch里面有

可能是查詢數據的時間沒選正確

3、Logstash啟動巨慢

安裝epel源然后安裝haveged并啟動,重啟logstash

4、Yum安裝的logstash能啟動,但是無法導入數據到elasticsearch里面

一般情況下yum安裝的elasticsearch和kibana沒什么大問題,但是logstash不行,好像不太好指定配置文件,會遇到很多坑

5、數據導入后沒有按照規定的正則以json方式展現

一般是數據的格式和正則對不上

 

 

 高清原文 烏龜運維 wuguiyunwei.com


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德保县| 合江县| 全椒县| 樟树市| 金堂县| 平邑县| 双牌县| 弥勒县| 柘城县| 北安市| 砚山县| 芜湖市| 呼和浩特市| 迁西县| 安顺市| 深泽县| 玛纳斯县| 陇南市| 上栗县| 霸州市| 保靖县| 龙泉市| 讷河市| 肥城市| 资阳市| 山丹县| 崇礼县| 太仆寺旗| 永泰县| 仪陇县| 绥阳县| 普兰县| 固安县| 满城县| 石嘴山市| 稷山县| 西贡区| 上林县| 赫章县| 巴彦淖尔市| 乌鲁木齐县|