centos7.5部署ELk
第1章 環境規劃
1.1 ELK介紹
? ? ? ELK是ElasticSerach、Logstash、Kibana三款產品名稱的首字母集合,用于日志的搜集和搜索。
? ? ? Elasticsearch:是一個開源分布式搜索引擎,提供搜集、分析、存儲三大功能,特點是分布式、零配置、自動發現、索引自動分片、索引副本機制,restful風格接口,多數據源,自動搜索負載等。
? ? ? Logstash:主要用來日志收集、分析、過濾日志的工具,支持大量數據獲取方式。一般工作方式為C\S架構,Client端安裝在需要收集日志的主機上,server端負責將收集到的各個節點日志進行過濾、修改等操作,然后一并發給elasticsearch。
? ? ? Kibana:可以作為Logstash和elasticsearch提供的日志分析友好的UI界面,可以幫助匯總、分析和搜索重要數據日志。
? ? ? Filebeat:輕量級數據收集引擎,ELK Stack 在 Agent 的第一選擇。
1.2 Filebeat工作原理
? ? ? ?Filebeat由兩個主要組件組成:prospectors?和?harvesters。這兩個組件協同工作將文件變動發送到指定的輸出中。 ? ? ? ?Harvester(收割機):負責讀取單個文件內容。每個文件會啟動一個Harvester,每個Harvester會逐行讀取各個文件,并將文件內容發送到制定輸出中。Harvester負責打開和關閉文件,意味在Harvester運行的時候,文件描述符處于打開狀態,如果文件在收集中被重命名或者被刪除,Filebeat會繼續讀取此文件。所以在Harvester關閉之前,磁盤不會被釋放。默認情況filebeat會保持文件打開的狀態,直到達到close_inactive(如果此選項開啟,filebeat會在指定時間內將不再更新的文件句柄關閉,時間從harvester讀取最后一行的時間開始計時。若文件句柄被關閉后,文件發生變化,則會啟動一個新的harvester。關閉文件句柄的時間不取決于文件的修改時間,若此參數配置不當,則可能發生日志不實時的情況,由scan_frequency參數決定,默認10s。Harvester使用內部時間戳來記錄文件最后被收集的時間。例如:設置5m,則在Harvester讀取文件的最后一行之后,開始倒計時5分鐘,若5分鐘內文件無變化,則關閉文件句柄。默認5m)。? ? ? ?Prospector(勘測者):負責管理Harvester并找到所有讀取源。
filebeat.prospectors: - input_type: log paths: - /apps/logs/*/info.log? ? ? ?Prospector會找到/apps/logs/*目錄下的所有info.log文件,并為每個文件啟動一個Harvester。Prospector會檢查每個文件,看Harvester是否已經啟動,是否需要啟動,或者文件是否可以忽略。若Harvester關閉,只有在文件大小發生變化的時候Prospector才會執行檢查。只能檢測本地的文件。
1.3 ELk工作原理
? ? ? ?Logstash通過Filebeat收集AppServer產生的Log,并存放到ElasticSearch集群中,而Kibana則從ES集群中查詢數據生成圖表,再返回給Browser。1.4 環境說明
本次實戰需要兩臺電腦(或者vmware下的兩個虛擬機),操作系統都是CentOS7,它們的身份、配置、地址等信息如下:
| Hostname | Ip地址 | 身份說明 | 配置 |
| elk-server | 10.0.0.175 | ELK服務端,接收日志,提供日志搜索服務 | 4G內存 |
| docker01 | 10.0.0.110 | Nginx服務端,Tomcat服務端產生的訪問日志通過上報到Logstash | 2G內存 |
? 運行時的部署情況如下圖所示:
1.5 業務要求
1、業務請求到達nginx-server機器上的Nginx;
2、Nginx響應請求,并在access.log文件中增加訪問記錄;
3、FileBeat搜集新增的日志,通過LogStash的5044端口上傳日志;
4、LogStash將日志信息通過本機的9200端口傳入到ElasticSerach;
5、搜索日志的用戶通過瀏覽器訪問Kibana,服務器端口是5601;
6、Kibana通過9200端口訪問ElasticSerach;
1.6?系統設置
1、設置hostname,打開文件/etc/hostname,將內容改為elk-server
2、關閉防火墻(如果因為其他原因不能關閉防火墻,也請不要禁止80端口):systemctl stop firewalld.service
3、禁止防火墻自動啟動:systemctl disable firewalld.service
4、打開文件vim /etc/security/limits.conf,添加下面四行內容:
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 40965、打開文件vim /etc/sysctl.conf,添加下面一行內容:
vm.max_map_count=655360加載sysctl配置,執行命令:sysctl -p
第2章 部署ELK
2.1 安裝JDK
下載地址:https://www.oracle.com/technetelk/java/javase/downloads/jdk8-downloads-2133151.html
推薦使用JDK版本為8系列。
elk-server服務器上面部署:
將下載好的JDK上傳到/opt目錄下面
cd /opt/#進行解壓
tar xf jdk-8u181-linux-x64.tar.gz#創建軟連接
ln -s jdk1.8.0_181 /opt/jdk#定義環境變量
sed -i.ori '$a export JAVA_HOME=/opt/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile#注釋
export JAVA_HOME=/opt/jdk
<-- 定義jdk軟件程序目錄
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
<-- 定義jdk命令存在于環境變量中,可以直接使用
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
<-- 定義java程序運行所需的庫文件環境變量(classpath)
# 加載環境變量配置信息
source /etc/profile# 確認檢查jdk版本信息
java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)2.2 部署elasticsearch
#創建目錄/usr/local/elk
mkdir /usr/local/elk#進入該目錄中,下載軟件包
cd /usr/local/elk#下載地址ELK官網https://www.elastic.co/downloads下載
#或者命令行上面直接下載
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz#下載完畢后,將壓縮包解壓到/usr/local/elk目錄下
tar xf elasticsearch-6.2.4.tar.gz tar xf logstash-6.2.4.tar.gz tar xf kibana-6.2.4-linux-x86_64.tar.gz#創建軟連接
ln -s /usr/local/elk/elasticsearch-6.2.4 /usr/local/elk/elasticsearch ln -s /usr/local/elk/logstash-6.2.4 /usr/local/elk/logstash ln -s /usr/local/elk/kibana-6.2.4-linux-x86_64 /usr/local/elk/kibana創建用戶:
ElasticSerach要求以非root身份啟動,所以我們要創建一個用戶:
創建用戶組:
groupadd elk創建用戶加入用戶組:
useradd elk -g elk創建日志文件
touch /usr/local/elk/elasticsearch/logs/elasticsearch.log設置ElasticSerach文件夾為用戶elasticsearch所有:
chown -R elk. /usr/local/elk/elasticsearch/啟動ElasticSerach
切換到用戶elasticsearch:su elasticsearch
su - elk進入目錄/usr/local/elk/elasticsearch;執行啟動命令:bin/elasticsearch -d,此時會在后臺啟動elasticsearch;
cd /usr/local/elk/elasticsearchbin/elasticsearch -d
查看啟動日志可執行命令:tail -f /usr/local/elk/elasticsearch/logs/elasticsearch.log 提示如下:
tail -f /usr/local/elk/elasticsearch/logs/elasticsearch.log?通過ss -lntup查看端口號已經啟動
執行curl命令檢查服務是否正常響應:curl 127.0.0.1:9200,收到響應如下:
至此,ElasticSerach服務啟動成功,接下來是Logstash;
2.3 部署Logstash
#退出當前用戶,回到root用戶
在目錄cd /usr/local/elk/logstash下創建文件vim default.conf,內容如下:
# 監聽5044端口作為輸入 input {beats {port => "5044"} } # 數據過濾 filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}geoip {source => "clientip"} } # 輸出配置為本機的9200端口,這是ElasticSerach服務的監聽端口 output {elasticsearch {hosts => ["127.0.0.1:9200"]} }后臺啟動Logstash服務
nohup bin/logstash -f default.conf --config.reload.automatic &查看啟動日志:tail -f logs/logstash-plain.log,啟動成功的信息如下:
通過ss -lntup查看端口號已經啟動
2.4 部署配置Kibana
打開Kibana的配置文件vim /usr/local/elk/kibana/config/kibana.yml,到第七行
#server.host: "localhost"改成如下內容:
server.host: "10.0.0.175"這樣其他電腦就能用瀏覽器訪問Kibana的服務了;
進入Kibana的目錄:/usr/local/elk/kibana ;執行啟動命令:nohup bin/kibana &
cd /usr/local/elk/kibananohup bin/kibana &
查看啟動日志:tail -f nohup.out 以下信息表示啟動成功:
?
在瀏覽器訪問http://10.0.0.175:5601,看到如下頁面
至此,ELK服務啟動成功,接下來我們將業務日志上報上來,需要操作另一臺電腦:docker01;
第3章 部署nginx-server
3.1 安裝nginx-server
?在已經部署好的docker環境下,部署nginx-server
docker run --name nginx-server -d -p 80:80 -v /var/log/nginx:/var/log/nginx nginx:1.14?通過docker ps -a可以查看到服務已經運行
通過訪問頁面10.0.0.110
?
?多刷新幾次,為增加日志,到此nginx-server部署完成
3.2 安裝FileBeat
在nginx-server電腦創建目錄/usr/local/elk
mkdir -p /usr/local/elk進入/usr/local/elk目錄下執行以下命令,下載FileBeat安裝包
cd /usr/local/elk
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz
下載完成后解壓壓縮包
tar -xf filebeat-6.2.4-linux-x86_64.tar.gz
ln -s /usr/local/elk/filebeat-6.2.4-linux-x86_64 /usr/local/elk/filebeat
打開文件/usr/local/elk/filebeat/filebeat.yml,修改以下內容:
24 enabled: true
28 - /var/log/nginx/*.log
143 #output.elasticsearch:
145 # hosts: ["localhost:9200"]
153 output.logstash:
155 hosts: ["10.0.0.175:5044"]
最后的配置文件為:
egrep -v '^$|#' /usr/local/elk/filebeat/filebeat.ymlfilebeat.prospectors: - type: logenabled: truepaths:- /var/log/nginx/*.log filebeat.config.modules:path: ${path.config}/modules.d/*.ymlreload.enabled: false setup.template.settings:index.number_of_shards: 3 setup.kibana: output.logstash:hosts: ["10.0.0.175:5044"]
啟動FileBeat
nohup ./filebeat -e -c filebeat.yml &>/dev/null &至此,FileBeat也啟動成功了,接下來驗證服務;
第4章 Kibana頁面展示
通過瀏覽器多訪問幾次nginx服務,這樣能多制造一些訪問日志,訪問地址:http://10.0.0.110
訪問Kibana:http://10.0.0.175:5601,點擊左上角的Discover,如下圖紅框,可以看到訪問日志已經被ELK搜集了:
如下圖,輸入logstash-*,點擊”Next step”:
?
如下圖,選擇Time Filter,再點擊“Create index pattern”:
?
頁面提示創建Index Patterns成功:
點擊左上角的”Discover”按鈕,即可看到最新的日志信息,如下圖:
?
在下圖的此處可以關鍵詞搜索:error*,也可以查看nginx的報錯信息
至此,我們已經可以在ELK上查到Nginx的訪問日志了,接下來將Tomcat的日志也接進來;
第5章 安裝和啟動Tomcat
docker run --name tocat-server -d -p 8080:8080 -v /var/log/tomcat:/usr/local/tomcat/logs tomcat:latest?通過docker ps -a可以查看到服務已經運行
瀏覽器訪問:http://10.0.0.110:8080,看到啟動成功,如下圖
?
訪問Tomcat提供的example服務的子頁面,如下圖:
http://10.0.0.110:8080/examples/servlets/servlet/RequestInfoExample
至此,Tomcat已經啟動成功,接下來將Tomcat的訪問日志接入ELK;
5.3 部署filebea
Tomcat訪問日志接入ELK
打開FileBeat的配置文件vim? /usr/local/elk/filebeat/filebeat.yml,在”filebeat.prospectors:”下面新增一個配置節點,內容如下
- type: logenabled: truepaths:- /var/log/tomcat/localhost_access_log.*.txt最后配置文件內容如下:
egrep -v '^$|#' /usr/local/elk/filebeat/filebeat.ymlfilebeat.prospectors: - type: logenabled: truepaths:- /var/log/nginx/*.log - type: logenabled: truepaths:- /var/log/tomcat/* filebeat.config.modules:path: ${path.config}/modules.d/*.ymlreload.enabled: false setup.template.settings:index.number_of_shards: 3 setup.kibana: output.logstash:hosts: ["10.0.0.175:5044"]
重啟filebeat服務,首先找到這個進程,進行kill掉,再啟動filebeat
ps -ef|grep filebeat cd /usr/local/elk/filebeat nohup ./filebeat -e -c filebeat.yml &>/dev/null &此時在Kibana頁面已經可以搜索到Tomcat的訪問日志,
以“RequestInfoExample”作為關鍵詞搜索也能搜到對應的訪問日志:
第六章??kibana平臺增加安全認證
kibana是nodejs開發的,本身并沒有任何安全限制,直接瀏覽url就能訪問,如果公網環境非常不安全,可以通過nginx請求轉發增加認證,方法如下:
6.1 安裝nginx
yum install -y nginx在kibana所在的服務器上安裝nginx服務,利用nginx的轉發指令實現。?
安裝好nginx后,進入nginx配置頁面,修改如下:
6.2?安裝生成密碼工具:
yum install httpd-tools生成密碼文件:
[root@elk-server nginx]# htpasswd -bc /etc/nginx/Kbn_htpasswd wzxmt admin Adding password for user wzxmt [root@elk-server nginx]# chmod 400 /etc/nginx/Kbn_htpasswd 由于我們nginx使用者為root,所以這一塊不需要授予屬組權限。6.3 修改kibana、重啟kibana與nginx
vim /usr/local/work/kibana/config/kibana.yml server.host: "127.0.0.1"重啟kibana與nginx就不再述說;
6.4 web測試
在web端測試訪問
?
輸入認證信息,即可訪問kibana
?第7章? 漢化kibana
7.1 安裝git
yum install -y git7.2? 下載漢化包
git clone https://github.com/anbai-inc/Kibana_Hanization.git7.3 進行漢化
第一種方法:cd Kibana_Hanization/old
python main.py /usr/local/elk/kibana/
/timelion.bundle.js]已翻譯。
....
恭喜,Kibana漢化完成!
第二種方法:
(1)拷貝此項目中的translations文件夾到您的kibana目錄下的src/legacy/core_plugins/kibana/目錄。若您的kibana無此目錄,那還是嘗試使用第一種方法。 (2)修改您的kibana配置文件kibana.yml中的配置項:i18n.locale: "zh-CN" (3)重啟Kibana,漢化完成
7.4 重啟kibana
可以看到漢化成功。
?
至此,ELK-6.2.4版本的服務和日志上報的搭建已經完成,后續如果還有業務服務器要上報日志,
只需按照上述步驟安裝和配置FileBeat即可;此次部署ELK,只是一個簡單的了解,后面還需繼續
研究ELK。
轉載于:https://www.cnblogs.com/wzxmt/p/10159951.html
總結
以上是生活随笔為你收集整理的centos7.5部署ELk的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 订飞猪酒店便宜的方法(飞猪怎么订酒店便宜
- 下一篇: 判断使用设备是PC还是phone