Linux下部署ELK-7.6.2

參考鏈接:https://www.cnblogs.com/wzxmt/p/10159951.html

//系統以及環境
| hostname | ip地址 | 系統 |  備註|
|----------|-------|--|---|-----|
| elk-server | 192.168.56.31/24 | CentOS Linux release 7.8.2003 (Core)| ELK服務端,接收日誌,提供日誌搜索服務 |
| elk-client | 192.168.56.32/24 | CentOS Linux release 7.8.2003 (Core)| Nginx服務端,Tomcat服務端產生的訪問日誌通過filebeat上報到Logstash |

//SELinux設置
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
//elk-server 以及elk-client 一樣操作,更新系統並安裝需要的包
# yum -y install wget
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
# yum clean all
# yum update -y	//可不選
# yum -y install vim lsof
# echo "192.168.56.31    elk-server" >> /etc/hosts
# echo "192.168.56.32    elk-client" >> /etc/hosts
# reboot
//分別安裝jdk-11.0.7_linux-x64_bin(如果elk-client不使用tomcat可以不安裝)
# mkdir /usr/java
# tar xf jdk-11.0.7_linux-x64_bin.tar.gz -C /usr/java/
# echo "JAVA_HOME=/usr/java/jdk-11.0.7" >> /etc/profile
# echo "PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin" >> /etc/profile
# echo "CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME%/lib/dt.jar:$JAVA_HOME/lib:$JAVA_HOME/jre/lib" >> /etc/profile
# echo "export JAVA_HOME PATH CLASSPATH" >> /etc/profile
# source /etc/profile && java -version
//在elk-server 操作
# firewall-cmd --zone=public --permanent --add-port=5601/tcp
# firewall-cmd --zone=public --permanent --add-port=5044/tcp
# firewall-cmd --reload

//下載並解壓包
# wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz"
# wget "https://artifacts.elastic.co/downloads/logstash/logstash-7.6.2.tar.gz"
# wget "https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-linux-x86_64.tar.gz"
# mkdir /usr/local/elk
# tar zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz -C /usr/local/elk/
# tar zxvf logstash-7.6.2.tar.gz -C /usr/local/elk/
# tar zxvf kibana-7.6.2-linux-x86_64.tar.gz -C /usr/local/elk/
# ln -s /usr/local/elk/elasticsearch-7.6.2 /usr/local/elk/elasticsearch
# ln -s /usr/local/elk/logstash-7.6.2 /usr/local/elk/logstash
# ln -s /usr/local/elk/kibana-7.6.2-linux-x86_64 /usr/local/elk/kibana

//創建用戶
# useradd elk
# passwd elk	//爲了安全,給elk增加密碼
# chown -R elk:elk /usr/local/elk

//部署配置elasticsearch
# touch /usr/local/elk/elasticsearch/logs/elasticsearch.log
# cd /usr/local/elk/elasticsearch
# vim config/elasticsearch.yml	//編輯配置文件制定集羣/節點名稱
====分割線====
17 cluster.name: my-application
23 node.name: node-1
====分割線====
# su elk
$ cd /usr/local/elk/elasticsearch/bin
$ ./elasticsearch -d
$ tail -f /usr/local/elk/elasticsearch/logs/elasticsearch.log	//查看運行log
$ curl 127.0.0.1:9200	//檢查服務響應
$ exit	//回到root用戶繼續操作

//部署配置logstash
# cd /usr/local/elk/logstash
//創建文件 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"]
    }
}
====分割線====
# nohup bin/logstash -f default.conf --config.reload.automatic &	//啓動logstash
# ps aux|grep logstash	//進程檢查
# tail -f logs/logstash-plain.log	//log查看

//部署配置Kibana
# chown -R elk:elk kibana-7.6.2-linux-x86_64
# cd /usr/local/elk/kibana/config/
# vim kibana.yml    //在第七行,改成如下內容
====分割線====
server.host: "192.168.56.31"
====分割線====
# cd /usr/local/elk/kibana/
# su elk
$ nohup bin/kibana &	//啓動服務
$ tail -f nohup.out

//在瀏覽器訪問 http://192.168.56.31:5601 出現如下界面,點擊 “explore on my own”
在這裏插入圖片描述在這裏插入圖片描述

//在elk-server 操作
//漢化 kibana (可選)
# yum install -y git	//安裝git
# git clone https://github.com/anbai-inc/Kibana_Hanization.git
# cp Kibana_Hanization/translations/zh-CN.json /usr/local/elk/kibana/src/legacy/core_plugins/kibana/
# cd /usr/local/elk/
# vim kibana/config/kibana.yml	//修改爲如下內容
====分割線====
115 i18n.locale: "zh-CN"
====分割線====
//重啓kibana
# cd /usr/local/elk/kibana/
# su elk
$ lsof -i:5601	//查出進程號,kill掉
$ nohup bin/kibana &	//啓動服務
$ tail -f nohup.out
//在elk-server 操作
//kibana 增強安全性(配置基於角色的訪問控制)
//官方參考 https://www.elastic.co/cn/blog/getting-started-with-elasticsearch-security
# cd /usr/local/elk/elasticsearch
# su elk
//生成tls證書
$ bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
//編輯文件 config/elasticsearch.yml //將下列代碼行粘貼到文件末尾
$ vim config/elasticsearch.yml
====分割線====
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
====分割線====
//重新啓動(如果已經運行)elasticsearch
$ /usr/local/elk/elasticsearch/bin/elasticsearch -d
$ bin/elasticsearch-setup-passwords auto	//爲不同的內部堆棧用戶生成隨機密碼,並且記住這些密碼
//接下來爲 Kibana 用戶添加密碼. setup-passwords 命令的輸出內容中找到密碼
$ cd /usr/local/elk/kibana/
$ vim config/kibana.yml	//編輯文件kibana.yml 修改以下內容
====分割線====
 46 elasticsearch.username: "kibana"
 47 elasticsearch.password: "RQaSMCvi8CaQntJIpdfV"
====分割線====
//重新啓動(如果已經運行)kibana
$ nohup bin/kibana &
//瀏覽器訪問 kibana http://192.168.56.31:5601,使用 elastic 用戶與密碼登錄。(如下圖)
//登錄後創建第一個角色 read_logs 選擇 索引權限 字段並選擇 日誌索引。然後我們將其指定爲 read 權限 並創建角色
//再創建另一個名爲 read_flight 的角色,航班索引分配 read 權限
//然後創建用戶併爲他們分配這兩個角色,將這名用戶命名爲 flight_user,並設置密碼。無需設置全名和電子郵件地址。需要爲這名用戶分配 read_flight 角色,而且還需要爲其分配 kibana_user 角色(因爲該用戶將會查看 Kibana 中的數據),點擊創建用戶。
//到此,步驟完成。登錄對應的用戶即可使用/查看對應角色所有的log和功能

在這裏插入圖片描述在這裏插入圖片描述

//kibana 增加安全認證(可選,注意該方式與上面增加的安全方式衝突)(使用Nginx反向代理)
# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload

# yum -y install epel-release	//添加額外存儲庫
# yum -y install nginx	//安裝Nginx
//編輯 nginx.conf 文件修改配置如下:
# vim nginx.conf	//主要是在48到52 添加了一些內容,意義是端口轉發,其他可以按需配置. 
====分割線====
 47         location / {
 48             index index.html index.htm;
 49             proxy_set_header Host $host;
 50             proxy_pass http://127.0.0.1:5601;
 51             auth_basic "Kibana login auth";
 52             auth_basic_user_file /etc/nginx/kibana_httppasswd;
 53         }
====分割線====
# yum install httpd-tools	//安裝生成密碼工具
# htpasswd -bc /etc/nginx/kibana_httppasswd admin admin	//生成密碼文件
# chmod 400 /etc/nginx/kibana_httppasswd	//設置權限
# vim /usr/local/elk/kibana/config/kibana.yml	//修改kibana.yml,把host修改爲127.0.0.1
====分割線====
server.host: "127.0.0.1"
====分割線====
# nginx -t	//配置文件語法測試
# chown nginx:nginx kibana_httppasswd
//重啓kibana與nginx
# systemctl restart nginx
# cd /usr/local/elk/kibana/	
# ps aux|grep node	//要重啓kibana,先使用ps 找到其pid,kill掉再啓動
# su elk
$ nohup bin/kibana &	//啓動服務
//在瀏覽器輸入 http://192.168.56.31 然後輸入設置好的帳密,即可正常使用 
//在elk-server 操作
//所有內容部署完畢之後,重啓機器需要啓動的服務(即開機啓動項)
# /bin/su - elk -c "/usr/local/elk/elasticsearch/bin/elasticsearch -d"
# /bin/su - elk -c "nohup /usr/local/elk/logstash/bin/logstash -f /usr/local/elk/logstash/default.conf --config.reload.automatic &"
# /bin/su - elk -c "nohup /usr/local/elk/kibana/bin/kibana &"
# systemctl start nginx
//接下來在 elk-client操作
# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# yum -y install epel-release	//添加額外存儲庫
# yum -y install nginx	//安裝Nginx
# systemctl start nginx
# lsof -i:80	//服務端口檢查

//部署 filebeat
# wget "https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.2-linux-x86_64.tar.gz"
# mkdir /usr/local/elk
# tar zxvf filebeat-7.6.2-linux-x86_64.tar.gz -C /usr/local/elk/
# ln -s /usr/local/elk/filebeat-7.6.2-linux-x86_64 /usr/local/elk/filebeat
# cd /usr/local/elk/filebeat
//編輯文件filebeat.yml,修改爲以下內容:
# vim filebeat.yml
====分割線====
24   enabled: true
28     - /var/log/nginx/*.log
148 #output.elasticsearch:
150 #  hosts: ["localhost:9200"]
161 output.logstash:
163   hosts: ["192.168.56.31:5044"]
====分割線====

# nohup ./filebeat -e -c filebeat.yml &> /dev/null &	//啓動filebeat
# curl 127.0.0.1:80	//多次訪問Nginx製造一些log

//在瀏覽器上打開 kibana 頁面 http://192.168.56.31:5601/ 選擇 Discover ,輸入logstash-*,點擊”Next step”,下一步 選擇 @timestamp,再點擊“Create index pattern”,頁面提示創建Index Patterns成功
在這裏插入圖片描述在這裏插入圖片描述

//繼續在 elk-client操作(可選)
# cd /usr/local/elk/filebeat
# ./filebeat modules list	//查看modules列表
# ./filebeat modules enable nginx 	//通過啓動modules簡化操作
# ./filebeat modules disable nginx 	//禁用
//在elk-client 操作
//所有內容部署完畢之後,重啓機器需要啓動的服務(即開機啓動項)
# nohup /usr/local/elk/filebeat/filebeat -e -c /usr/local/elk/filebeat/filebeat.yml &>/dev/null &
# systemctl start tomcat	//如有
# systemctl start nginx

到此,ELK完成部署。
另:最好是所有的elk部件均使用elk用戶去運行。
有新增的log服務器監控需求時,安裝elk-client部分內容操作一遍即可。
有新增的服務log收集需求時,可以在 filebeat.yml 中添加 paths: 並重啓服務即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章