如何在 CentOS 7 上安裝 Elastic Stack
前提條件
- 64 位的 CentOS 7,4 GB 內存 - elk 主控機
- 64 位的 CentOS 7 ,1 GB 內存 - 客戶端 1
- 64 位的 Ubuntu 16 ,1 GB 內存 - 客戶端 2
步驟 1 - 準備操作系統
在本教程中,我們將禁用 CentOS 7 伺服器上的 SELinux。 編輯 SELinux 配置文件。
vim /etc/sysconfig/selinux
將 SELINUX
的值從 enforcing
改成 disabled
。
SELINUX=disabled
然後重啟伺服器:
reboot
再次登錄伺服器並檢查 SELinux 狀態。
getenforce
確保結果是 disabled
。
步驟 2 - 安裝 Java
部署 Elastic stack 依賴於Java,Elasticsearch 需要 Java 8 版本,推薦使用 Oracle JDK 1.8 。我將從官方的 Oracle rpm 包安裝 Java 8。
使用 wget
命令下載 Java 8 的 JDK。
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"
然後使用 rpm
命令安裝:
rpm -ivh jdk-8u77-linux-x64.rpm
最後,檢查 java JDK 版本,確保它正常工作。
java -version
您將看到伺服器的 Java 版本。
步驟 3 - 安裝和配置 Elasticsearch
在此步驟中,我們將安裝和配置 Elasticsearch。 從 elastic.co 網站提供的 rpm 包安裝 Elasticsearch,並將其配置運行在 localhost 上(以確保該程序安全,而且不能從外部訪問)。
在安裝 Elasticsearch 之前,將 elastic.co 的密鑰添加到伺服器。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
接下來,使用 wget
下載 Elasticsearch 5.1,然後安裝它。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm
Elasticsearch 已經安裝好了。 現在進入配置目錄編輯 elasticsaerch.yml
配置文件。
cd /etc/elasticsearch/
vim elasticsearch.yml
去掉第 40 行的注釋,啟用 Elasticsearch 的內存鎖。這將禁用 Elasticsearch 的內存交換。
bootstrap.memory_lock: true
在 Network
塊中,取消注釋 network.host
和 http.port
行。
network.host: localhost
http.port: 9200
保存文件並退出編輯器。
現在編輯 elasticsearch.service
文件的內存鎖配置。
vim /usr/lib/systemd/system/elasticsearch.service
去掉第 60 行的注釋,確保該值為 unlimited
。
MAX_LOCKED_MEMORY=unlimited
保存並退出。
Elasticsearch 配置到此結束。Elasticsearch 將在本機的 9200 埠運行,我們通過在 CentOS 伺服器上啟用 mlockall
來禁用內存交換。重新載入 systemd,將 Elasticsearch 置為開機啟動,然後啟動服務。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
等待 Eelasticsearch 啟動成功,然後檢查伺服器上打開的埠,確保 9200 埠的狀態是 LISTEN
。
netstat -plntu
然後檢查內存鎖以確保啟用 mlockall
,並使用以下命令檢查 Elasticsearch 是否正在運行。
curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'
會看到如下結果。
步驟 4 - 安裝和配置 Kibana 和 Nginx
在這一步,我們將在 Nginx Web 伺服器上安裝並配置 Kibana。 Kibana 監聽在 localhost 上,而 Nginx 作為 Kibana 的反向代理。
用 wget
下載 Kibana 5.1,然後使用 rpm
命令安裝:
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm
編輯 Kibana 配置文件。
vim /etc/kibana/kibana.yml
去掉配置文件中 server.port
、server.host
和 elasticsearch.url
這三行的注釋。
server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"
保存並退出。
將 Kibana 設為開機啟動,並且啟動 Kibana 。
sudo systemctl enable kibana
sudo systemctl start kibana
Kibana 將作為 node 應用程序運行在埠 5601 上。
netstat -plntu
Kibana 安裝到此結束。 現在我們需要安裝 Nginx 並將其配置為反向代理,以便能夠從公共 IP 地址訪問 Kibana。
Nginx 在 Epel 資源庫中可以找到,用 yum
安裝 epel-release。
yum -y install epel-release
然後安裝 Nginx 和 httpd-tools 這兩個包。
yum -y install nginx httpd-tools
httpd-tools 軟體包包含 Web 伺服器的工具,可以為 Kibana 添加 htpasswd 基礎認證。
編輯 Nginx 配置文件並刪除 server {}
塊,這樣我們可以添加一個新的虛擬主機配置。
cd /etc/nginx/
vim nginx.conf
刪除 server { }
塊。
保存並退出。
現在我們需要在 conf.d
目錄中創建一個新的虛擬主機配置文件。 用 vim
創建新文件 kibana.conf
。
vim /etc/nginx/conf.d/kibana.conf
複製下面的配置。
server {
listen 80;
server_name elk-stack.co;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass http://localhost: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;
}
}
保存並退出。
然後使用 htpasswd
命令創建一個新的基本認證文件。
sudo htpasswd -c /etc/nginx/.kibana-user admin
「輸入你的密碼」
測試 Nginx 配置,確保沒有錯誤。 然後設定 Nginx 開機啟動並啟動 Nginx。
nginx -t
systemctl enable nginx
systemctl start nginx
步驟 5 - 安裝和配置 Logstash
在此步驟中,我們將安裝 Logstash,並將其配置為:從配置了 filebeat 的 logstash 客戶端里集中化伺服器的日誌,然後過濾和轉換 Syslog 數據,並將其移動到存儲中心(Elasticsearch)中。
下載 Logstash 並使用 rpm 進行安裝。
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm
生成新的 SSL 證書文件,以便客戶端可以識別 elastic 服務端。
進入 tls
目錄並編輯 openssl.cnf
文件。
cd /etc/pki/tls
vim openssl.cnf
在 [v3_ca]
部分添加伺服器標識。
[ v3_ca ]
# Server IP Address
subjectAltName = IP: 10.0.15.10
保存並退出。
使用 openssl
命令生成證書文件。
openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt
證書文件可以在 /etc/pki/tls/certs/
和 /etc/pki/tls/private/
目錄中找到。
接下來,我們會為 Logstash 創建新的配置文件。創建一個新的 filebeat-input.conf
文件來為 filebeat 配置日誌源,然後創建一個 syslog-filter.conf
配置文件來處理 syslog,再創建一個 output-elasticsearch.conf
文件來定義輸出日誌數據到 Elasticsearch。
轉到 logstash 配置目錄,並在 conf.d
子目錄中創建新的配置文件。
cd /etc/logstash/
vim conf.d/filebeat-input.conf
輸入配置,粘貼以下配置:
input {
beats {
port => 5443
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
保存並退出。
創建 syslog-filter.conf
文件。
vim conf.d/syslog-filter.conf
粘貼以下配置:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
我們使用名為 grok
的過濾器插件來解析 syslog 文件。
保存並退出。
創建輸出配置文件 output-elasticsearch.conf
。
vim conf.d/output-elasticsearch.conf
粘貼以下配置:
output {
elasticsearch { hosts => ["localhost:9200"]
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
保存並退出。
最後,將 logstash 設定為開機啟動並且啟動服務。
sudo systemctl enable logstash
sudo systemctl start logstash
步驟 6 - 在 CentOS 客戶端上安裝並配置 Filebeat
Beat 作為數據發送人的角色,是一種可以安裝在客戶端節點上的輕量級代理,將大量數據從客戶機發送到 Logstash 或 Elasticsearch 伺服器。有 4 種 beat,Filebeat
用於發送「日誌文件」,Metricbeat
用於發送「指標」,Packetbeat
用於發送「網路數據」,Winlogbeat
用於發送 Windows 客戶端的「事件日誌」。
在本教程中,我將向您展示如何安裝和配置 Filebeat
,通過 SSL 連接將數據日誌文件傳輸到 Logstash 伺服器。
登錄到客戶端1的伺服器上。 然後將證書文件從 elastic 伺服器複製到客戶端1的伺服器上。
ssh root@client1IP
使用 scp
命令拷貝證書文件。
scp root@elk-serverIP:~/logstash-forwarder.crt .
輸入 elk-server 的密碼
創建一個新的目錄,將證書移動到這個目錄中。
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
接下來,在客戶端 1 伺服器上導入 elastic 密鑰。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
下載 Filebeat 並且用 rpm
命令安裝。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm
Filebeat 已經安裝好了,請轉到配置目錄並編輯 filebeat.yml
文件。
cd /etc/filebeat/
vim filebeat.yml
在第 21 行的路徑部分,添加新的日誌文件。 我們將創建兩個文件,記錄 ssh 活動的 /var/log/secure
文件 ,以及伺服器日誌 /var/log/messages
。
paths:
- /var/log/secure
- /var/log/messages
在第 26 行添加一個新配置來定義 syslog 類型的文件。
document-type: syslog
Filebeat 默認使用 Elasticsearch 作為輸出目標。 在本教程中,我們將其更改為 Logshtash。 在 83 行和 85 行添加註釋來禁用 Elasticsearch 輸出。
禁用 Elasticsearch 輸出:
#-------------------------- Elasticsearch output ---------------------------#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
現在添加新的 logstash 輸出配置。 去掉 logstash 輸出配置的注釋,並將所有值更改為下面配置中的值。
output.logstash:
# The Logstash hosts
hosts: ["10.0.15.10:5443"]
bulk_max_size: 1024
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
保存文件並退出 vim。
將 Filebeat 設定為開機啟動並啟動。
sudo systemctl enable filebeat
sudo systemctl start filebeat
步驟 7 - 在 Ubuntu 客戶端上安裝並配置 Filebeat
使用 ssh
連接到伺服器。
ssh root@ubuntu-clientIP
使用 scp
命令拷貝證書文件。
scp root@elk-serverIP:~/logstash-forwarder.crt .
創建一個新的目錄,將證書移動到這個目錄中。
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
在伺服器上導入 elastic 密鑰。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
下載 Filebeat .deb 包並且使用 dpkg
命令進行安裝。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb
轉到配置目錄並編輯 filebeat.yml
文件。
cd /etc/filebeat/
vim filebeat.yml
在路徑配置部分添加新的日誌文件路徑。
paths:
- /var/log/auth.log
- /var/log/syslog
設定文檔類型為 syslog
。
document-type: syslog
將下列幾行注釋掉,禁用輸出到 Elasticsearch。
#-------------------------- Elasticsearch output ---------------------------#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
啟用 logstash 輸出,去掉以下配置的注釋並且按照如下所示更改值。
output.logstash:
# The Logstash hosts
hosts: ["10.0.15.10:5443"]
bulk_max_size: 1024
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
保存並退出 vim。
將 Filebeat 設定為開機啟動並啟動。
sudo systemctl enable filebeat
sudo systemctl start filebeat
檢查服務狀態:
systemctl status filebeat
步驟 8 - 測試
打開您的網路瀏覽器,並訪問您在 Nginx 中配置的 elastic stack 域名,我的是「elk-stack.co」。 使用管理員密碼登錄,然後按 Enter 鍵登錄 Kibana 儀錶盤。
創建一個新的默認索引 filebeat-*
,然後點擊「創建」按鈕。
默認索引已創建。 如果 elastic stack 上有多個 beat,您可以在「星形」按鈕上點擊一下即可配置默認 beat。
轉到 「發現」 菜單,您就可以看到 elk-client1 和 elk-client2 伺服器上的所有日誌文件。
來自 elk-client1 伺服器日誌中的無效 ssh 登錄的 JSON 輸出示例。
使用其他的選項,你可以使用 Kibana 儀錶盤做更多的事情。
Elastic Stack 已安裝在 CentOS 7 伺服器上。 Filebeat 已安裝在 CentOS 7 和 Ubuntu 客戶端上。
via: https://www.howtoforge.com/tutorial/how-to-install-elastic-stack-on-centos-7/
作者:Muhammad Arul 譯者:Flowsnow 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive