運維之路-完整的ELK搭建全過程和配置文件
ELK的安裝以及Logstash收集日誌的配置
Centos7+ELK V5.5.0
作者:編程界的小學生
時間:2018-3-18
零、注意事項
1、必須安裝JDK,並且配置好環境變數(參考:【運維之路-CentOS7+常用軟體的安裝(JDK+Tomcat+Nginx+Redis+MySQL)】)
2、必須非root用戶啟動
一、ELK版本
V5.5.0
二、Elasticsearch的安裝
1、安裝
解壓縮
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
三、Head插件的安裝
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
四、Logstash的安裝
1、安裝
tar -zxvf logstash-5.5.0.tar.gz
2、運行以及測試
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"
}
五、Kibana的安裝
1、安裝
tar-zxvf kibana-5.5.0-linux-x86_64.tar.gz
2、配置
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
3、啟動
./bin/kibana
4、測試
輸入:http://localhost:5601
六、Logstash的配置
logstash.conf
七、ELK+Redis
1、為什麼要用Redis
假如我們項目是多伺服器部署(或者帶有演示環境和生產環境等),這樣我們要部署ELK的話需要部署兩套來各自收集各自伺服器上的日誌到logstash。我們可以架一台Redis服務,然後讓項目代碼中列印的log直接到redis中(比如logback等),這時候配置logstash的input為redis即可。這樣我們項目日誌都打輸出到redis,然後logstash去同步redis的日誌數據到Elasticsearch。
2、logback的配置文件
logback-spring.xml
3、logstash的配置文件
logstash-redis.conf
4、同步到Elasticsearch里的數據長什麼樣?
5、注意幾點
5.1、無需擔心redis會爆掉,因為只要logstash同步完數據,就會立刻刪除掉redis中的log數據。5.2、建議log列印到redis的其他庫,不建議和業務庫放到一起,我這裡是業務在0庫,Log在5庫。
6、存在的問題
「七」的一開頭就說了用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中。
八、如何給kibana加上密碼訪問
直接通過nginx即可。步驟如下
1、安裝httpd-tools
yuminstall-y httpd-tools
2、配置用戶名密碼
他會為我們自動在/etc/nginx/conf.d/下創建一個httpasswd
htpasswd -bc /etc/nginx/conf.d/httpasswdadminadmin
3、配置nginx
### 查看日誌
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;
}
4、配置kibana
修改kibana.yml的server.basePath屬性
server.basePath: "/kibana"
5、注意
5.1、server.basePath默認是根目錄,我們這裡改成/kibana,要和nginx裡面的映射路徑/ kibana和rewrite一致。5.2、若上一步沒問題,訪問還是404,則檢查proxy_pass是ip還是localhost,兩個來回試試。
6、效果
訪問路徑:一定要帶上最後那個/
完整的文檔教程以及配置文件都放到了碼雲上
https://gitee.com/geekerdream/advanced-notes/tree/master
如果對你有幫助請給個star,謝謝。


TAG:編程界的小學生 |