當前位置:
首頁 > 最新 > 運維之路-完整的ELK搭建全過程和配置文件

運維之路-完整的ELK搭建全過程和配置文件

ELK的安裝以及Logstash收集日誌的配置

Centos7+ELK V5.5.0

作者:編程界的小學生

時間:2018-3-18


1、必須安裝JDK,並且配置好環境變數(參考:【運維之路-CentOS7+常用軟體的安裝(JDK+Tomcat+Nginx+Redis+MySQL)】)

2、必須非root用戶啟動

解壓縮

tar -zxvf elasticsearch-5.5.0.tar

進入目錄

cd elasticsearch-5.5.0/

2、配置

vim config/elasticsearch.yml

修改如下key:

cluster.name: es_cluster #這裡是你的el集群的名稱

node.name: node0 # elseach集群中的節點

path.data: /tmp/elasticseach/data #設置 data 目錄

path.logs: /tmp/elasticseach/logs #設置 logs 目錄

network.host:192.168.10.101 #這裡配置本機的 ip 地址

http.port: 9200 #默認的埠

修改伺服器內存、最大鏈接數等參數,不然就會報各種ERROR:

(1)修改config下的jvm.option文件

shell > vim/opt/elasticsearch-5.5.0/config/jvm.opstions

-Xms2g改為1g或者512M

-Xmx2g改為1g或者512M

(2)修改limits.conf文件添加如下內容

shell > vim/etc/security/limits.conf

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

(3)編輯sysctl.conf文件添加如下內容

shell > vim/etc/sysctl.conf

vm.max_map_count=655360

shell > sysctl -p

3、啟動

注意:非root用戶!!

./bin/elasticsearch

4、測試

輸入http://localhost:9200


1、先在本地解壓縮elasticsearch-head-master.zip

2、安裝node和grunt

3、修改上一節安裝的Elasticsearch的elasticsearch.yml文件添加以下內容

4、修改head插件的Gruntfile.js

connect: {

server: {

options: {

hostname:『0.0.0.0『,

port: 9100,

base:『.『,

keepalive: true

}

}

}

#增加hostname屬性,設置為0.0.0.0

5、修改app.js

elasticsearch-head/_site/app.js

this.base_uri =this.config.base_uri || this.prefs.get("app-base_uri") ||"http://192.168.73.22:9200";

#把localhost修改成ES的伺服器地址,如上面192.168.73.22

6、運行head

npm install

#如果安裝時報錯則嘗試下面命令

shell > npm install phantomjs-prebuilt@2.1.14--ignore-script

#啟動

shell > grunt server

#後台啟動

shell > cd /opt/elasticsearch-head/ && gruntserver &

7、測試

輸入http://localhost:9100


tar -zxvf logstash-5.5.0.tar.gz


cd /opt/logstash-5.5.0/

shell > bin/logstash -e"input}output}"

Hello World #在此輸入Hello World,看到有返回說明安裝成功

{

"@timestamp"=> 2017-10-31T07:47:48.466Z,

"@version"=> "1",

"host" =>"localhost",

"message"=> "Hello World"

}


tar-zxvf kibana-5.5.0-linux-x86_64.tar.gz


cd kibana-5.5.0-linux-x86_64/

vim config/kibana.yml

server.port: 5601 # kibaba服務 port

server.host: "192.168.73.22" #你的kibaba 的服務host

elasticsearch.url: "http://192.168.73.22:9200"# elastaticseach的host

kibana.index: ".kibana" # kibana

./bin/kibana


輸入:http://localhost:5601


logstash.conf


假如我們項目是多伺服器部署(或者帶有演示環境和生產環境等),這樣我們要部署ELK的話需要部署兩套來各自收集各自伺服器上的日誌到logstash。我們可以架一台Redis服務,然後讓項目代碼中列印的log直接到redis中(比如logback等),這時候配置logstash的input為redis即可。這樣我們項目日誌都打輸出到redis,然後logstash去同步redis的日誌數據到Elasticsearch。


logback-spring.xml


logstash-redis.conf


5、注意幾點

5.1、無需擔心redis會爆掉,因為只要logstash同步完數據,就會立刻刪除掉redis中的log數據。5.2、建議log列印到redis的其他庫,不建議和業務庫放到一起,我這裡是業務在0庫,Log在5庫。


「七」的一開頭就說了用redis的好處是為了解決多台機器部署的日誌問題,但是只解決了項目日誌的問題,nginx或者tomcat的日誌並沒解決,因為nginx和tomcat是單獨部署到伺服器上的,日誌文件也在各自的伺服器上。所以可以用如下思路解決:

每台伺服器各部署一台logstash負責收集各伺服器上的日誌文件,並同步到redis中,然後單獨部署一台logstash負責從redis中讀取日誌同步到Elasticsearch。

也就是說假設有A,B兩台伺服器,那麼我們需要部署三台Logstash,具體如下:

項目日誌-》直接通過日誌插件扔到redis中

A-》logstash-》負責收集A伺服器上的nginx+tomcat等日誌文件到redis

B-》logstash-》負責收集B伺服器上的nginx+tomcat等日誌文件到redis

然後在單獨部署一台logstash(可以在A,B或者其他單獨能訪問Redis的伺服器),這台logstash將redis的數據同步到Elasticsearch中。


直接通過nginx即可。步驟如下


yuminstall-y httpd-tools


他會為我們自動在/etc/nginx/conf.d/下創建一個httpasswd

htpasswd -bc /etc/nginx/conf.d/httpasswdadminadmin


location /kibana {

auth_basic "Restricted Access";

auth_basic_user_file /etc/nginx/conf.d/httpasswd;

rewrite /kibana/(.*) /$1 break;

proxy_pass http://192.168.73.22:5601;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

proxy_set_header Host $host;

proxy_cache_bypass $http_upgrade;

}


修改kibana.yml的server.basePath屬性

server.basePath: "/kibana"


5.1、server.basePath默認是根目錄,我們這裡改成/kibana,要和nginx裡面的映射路徑/ kibana和rewrite一致。5.2、若上一步沒問題,訪問還是404,則檢查proxy_pass是ip還是localhost,兩個來回試試。


訪問路徑:一定要帶上最後那個/

完整的文檔教程以及配置文件都放到了碼雲上

https://gitee.com/geekerdream/advanced-notes/tree/master

如果對你有幫助請給個star,謝謝。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 編程界的小學生 的精彩文章:

CentOS7常用軟體的安裝

TAG:編程界的小學生 |