Centos7上安裝與配置Elastic Stack

Elastic Stack簡介html

工具名稱介紹java

Elasticsearch是基於 Lucene 由 Java 開發的開源搜索引擎。它提供了一個分佈式、多租戶的全文搜索引擎(多租戶是指多租戶技術,是一種軟件架構技術,用來探討與實現如何在多用戶的環境下共用相同的系統或程序組件,而且仍可確保各用戶間數據的隔離性。),並帶有 HTTP 儀表盤的 Web 界面(Kibana)。數據會被 Elasticsearch 查詢、檢索,而且使用 JSON 文檔方案存儲。Elasticsearch 是一個可擴展的搜索引擎,可用於搜索全部類型的文本文檔,包括日誌文件。Elasticsearch 是 Elastic Stack 的核心,Elastic Stack 也被稱爲 ELK Stack。node

Logstash是用於管理事件和日誌的開源工具。它爲數據收集提供實時傳遞途徑。 Logstash 將收集您的日誌數據,將數據轉換爲 JSON 文檔,並將其存儲在 Elasticsearch 中。linux

Kibana是 Elasticsearch 的開源數據可視化工具。Kibana 提供了一個漂亮的儀表盤 Web 界面。 你能夠用它來管理和可視化來自 Elasticsearch 的數據。 它不只美麗,並且強大。nginx

在本教程中,我將向您展現如何在 CentOS 7 服務器上安裝和配置 Elastic Stack 以監視服務器日誌。 而後,我將向您展現如何在操做系統爲 CentOS 7 和 Ubuntu 16 的客戶端上安裝 「Elastic beats」。json

Elastic Stack所需環境條件bootstrap

64 位的 CentOS 7,4 GB 內存 - elk 主控機
64 位的 CentOS 7 ,1 GB 內存 - 客戶端 1
64 位的 Ubuntu 16 ,1 GB 內存 - 客戶端 2

步驟 1 - 操做系統初始化ubuntu

禁用 CentOS 7 服務器上的 SELinuxvim

咱們將禁用 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 http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm
                                     \\下載java8的版本
rpm -ivh jdk-8u77-linux-x64.rpm       \\rpm安裝jdk環境
java -version                          \\查看java的版本  檢查可否工做

步驟 3 - 安裝和配置 Elasticsearch

在此步驟中,咱們將安裝和配置 Elasticsearch。 從 elastic.co 網站提供的 rpm 包安裝 Elasticsearch,並將其配置運行在 localhost 上(以確保該程序安全,並且不能從外部訪問)。

將 elastic.co 的密鑰添加到服務器

elastic.co網站是一個https的網站(私有證書),咱們須要添加證書祕鑰才能安全的順利下載。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

下載安裝 Elasticsearch 5.1

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm

安裝完成後咱們編輯配置文件

配置文件名稱:elasticsaerch.yml

cd /etc/elasticsearch/
vim elasticsearch.yml

bootstrap.memory_lock: true  
                 \\去掉第 40 行的註釋,啓用 Elasticsearch 的內存鎖。這將禁用 Elasticsearch 的內存交換。

network.host: localhost
http.port: 9200
                  \\在 Network 塊中,取消註釋 network.host 和 http.port 行。

編輯 elasticsearch.service 文件的內存鎖配置。

vim /usr/lib/systemd/system/elasticsearch.service
MAX_LOCKED_MEMORY=unlimited
                  \\去掉第 60 行的註釋,確保該值爲 unlimited。

設置服務啓動

Elasticsearch監聽端口號9200,啓用 CentOS 服務器上啓用mlockall 來禁用內存交換,設置Elasticsearch開機自啓動,而後啓動服務。

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

檢查對外監聽端口:

netstat -plntu

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack
內存鎖啓用 mlockall,檢查 Elasticsearch 是否正在運行。

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

步驟 4 - 安裝和配置 Kibana 和 Nginx

先安裝Kibana,而後安裝nginx,最後設置nginx反向代理kibana

安裝並配置Kibana

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: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

將 Kibana 設爲開機啓動

sudo systemctl enable kibana
sudo systemctl start kibana

檢查Kibana 對外監聽端口 5601 確保其正常啓動。

netstat -plntu

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

安裝並配置nginx服務器

yum -y install epel-release
             nginx 服務的yum包在epel包中能夠找的  直接yum安裝
yum -y install nginx httpd-tools

httpd-tools 軟件包包含 Web 服務器的工具,能夠爲 Kibana 添加 htpasswd 基礎認證。

編輯 Nginx 配置文件並刪除 server {}模塊,這樣咱們添加新的虛擬主機配置。

cd /etc/nginx/
vim nginx.conf
                         \\刪除 server { } 塊。

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack
建立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 -t
systemctl enable nginx
systemctl start nginx

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

步驟 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 服務端。

cd /etc/pki/tls 
                 \\ 進入 tls 目錄並編輯 openssl.cnf 文件。
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

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

步驟 6 - 在 CentOS 客戶端上安裝並配置 Filebeat

Beat 做爲數據發送人的角色,是一種能夠安裝在客戶端節點上的輕量級代理,將大量數據從客戶機發送到 Logstash 或 Elasticsearch 服務器。有 4 種 beat,Filebeat 用於發送「日誌文件」,Metricbeat 用於發送「指標」,Packetbeat 用於發送「網絡數據」,Winlogbeat 用於發送 Windows 客戶端的「事件日誌」。

在本教程中,我將向您展現如何安裝和配置 Filebeat,經過 SSL 鏈接將數據日誌文件傳輸到 Logstash 服務器。

登陸到客戶端1的服務器上。 而後將證書文件從 elastic 服務器複製到客戶端1的服務器上。

ssh root@client1IP
scp root@elk-serverIP:~/logstash-forwarder.crt .
.....

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


                                     \\在 83 行和 85 行添加註釋來禁用 Elasticsearch 輸出,更改成 Logshtash:
-------------------------------------------------------------------------------------
#-------------------------- 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
--------------------------------------------------------------------------------------

PS:Filebeat 默認使用 Elasticsearch 做爲輸出目標。 在本教程中,咱們將其更改成 Logshtash。

將 Filebeat 設定爲開機啓動並啓動。

sudo systemctl enable filebeat
sudo systemctl start filebeat

步驟 7 - 在 Ubuntu 客戶端上安裝並配置 Filebeat

從服務端拷貝證書文件

ssh root@ubuntu-clientIP
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
      \\ 在第 21 行的路徑部分,添加新的日誌文件。 咱們將建立兩個文件,記錄 ssh 活動的 /var/log/secure 文件 ,以及服務器日誌 /var/log/messages :
paths:
- /var/log/secure
- /var/log/messages
                                \\在第 26 行添加一個新配置來定義 syslog 類型的文件:
document-type: syslog


                                     \\在 83 行和 85 行添加註釋來禁用 Elasticsearch 輸出,更改成 Logshtash:
-------------------------------------------------------------------------------------
#-------------------------- 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
--------------------------------------------------------------------------------------

PS:Filebeat 默認使用 Elasticsearch 做爲輸出目標。 在本教程中,咱們將其更改成 Logshtash。

將 Filebeat 設定爲開機啓動並啓動。

sudo systemctl enable filebeat
sudo systemctl start filebeat

檢查服務狀態:

systemctl status filebeat

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

步驟 8 - 測試

打開您的網絡瀏覽器,並訪問您在 Nginx 中配置的 elastic stack 域名,個人是「elk-stack.co」。 使用管理員密碼登陸,而後按 Enter 鍵登陸 Kibana 儀表盤。

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

建立一個新的默認索引 filebeat-*,而後點擊「建立」按鈕。
Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

默認索引已建立。 若是 elastic stack 上有多個 beat,您能夠在「星形」按鈕上點擊一下便可配置默認 beat。

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

轉到 「發現」 菜單,您就能夠看到 elk-client1 和 elk-client2 服務器上的全部日誌文件。

Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

來自 elk-client1 服務器日誌中的無效 ssh 登陸的 JSON 輸出示例。
Centos7上安裝與配置Elastic StackCentos7上安裝與配置Elastic Stack

使用其餘的選項,你可使用 Kibana 儀表盤作更多的事情。

Elastic Stack 已安裝在 CentOS 7 服務器上。 Filebeat 已安裝在 CentOS 7 和 Ubuntu 客戶端上。

本文地址:http://www.linuxprobe.com/elastic-stack-conf-install.html

相關文章
相關標籤/搜索