介紹
Elastic Stack(以前稱爲ELK Stack )是由Elastic生成的開源軟件集合,允許您以任何格式搜索,分析和可視化從任何源生成的日誌,這種做法稱爲集中式日誌記錄 。 在嘗試識別服務器或應用程序的問題時,集中日誌記錄非常有用,因爲它允許您在一個位置搜索所有日誌。 它也很有用,因爲它允許您通過在特定時間範圍內關聯其日誌來識別跨多個服務器的問題。
Elastic Stack有四個主要組件:
- Elasticsearch :一個分佈式RESTful搜索引擎,用於存儲所有收集的數據。
- Logstash :Elastic Stack的數據處理組件,用於將傳入數據發送到Elasticsearch。
- Kibana :用於搜索和可視化日誌的Web界面。
- Beats :輕量級,單一用途的數據發佈者,可以將數百或數千臺計算機中的數據發送到Logstash或Elasticsearch。
在本教程中,您將在Ubuntu 18.04服務器上安裝Elastic Stack 。 您將學習如何安裝Elastic Stack的所有組件 - 包括Filebeat ,用於轉發和集中日誌和文件的Beat - 並配置它們以收集和可視化系統日誌。 此外,由於Kibana通常只在localhost
上可用,我們將使用Nginx代理它,以便可以通過Web瀏覽器訪問它。 我們將在單個服務器上安裝所有這些組件,我們將其稱爲Elastic Stack服務器 。
注意 :安裝Elastic Stack時,必須在整個中使用相同的版本。 在本教程中,我們將安裝整個的最新版本,在撰寫本文時,它們是Elasticsearch 6.4.3,Kibana 6.4.3,Logstash 6.4.3和Filebeat 6.4.3。
先決條件
要完成本教程,您需要以下內容:
-
按照Ubuntu 18.04的初始服務器設置指南設置Ubuntu 18.04服務器,包括具有sudo權限的非root用戶和使用
ufw
配置的防火牆。 Elastic Stack服務器所需的CPU,RAM和存儲量取決於您要收集的日誌量。 在本教程中,我們將使用具有以下Elastic Stack服務器規範的VPS:- 操作系統:Ubuntu 18.04
- 內存:4GB
- CPU:2
-
Java 8 - Elasticsearch和Logstash所需 - 安裝在您的服務器上。 請注意,不支持Java 9。 要安裝它,請按照我們的指南中的“安裝Oracle JDK”部分,瞭解如何在Ubuntu 18.04上安裝Java 8。
-
Nginx安裝在您的服務器上,我們將在本指南後面配置爲Kibana的反向代理。 按照我們的指南如何在Ubuntu 18.04上安裝Nginx進行設置。
此外,由於Elastic Stack用於訪問您不希望未經授權的用戶訪問的有關您的服務器的有價值信息,因此通過安裝TLS / SSL證書來保證服務器安全非常重要。 這是可選的,但強烈鼓勵 。
但是,因爲您將在本指南的過程中最終對Nginx服務器塊進行更改,所以在本教程的第二步結束時完成Ubuntu 18.04上的Let's Encrypt指南可能更有意義。 考慮到這一點,如果您計劃在服務器上配置Let's Encrypt,在執行此操作之前,您將需要以下內容:
- 完全限定的域名(FQDN)。 本教程將始終使用
example.com
。 您可以在Namecheap上購買域名,在Freenom上免費獲取一個域名,或使用您選擇的域名註冊商。 -
爲您的服務器設置了以下兩個DNS記錄。 您可以按照DigitalOcean DNS的介紹瞭解有關如何添加它們的詳細信息。
- 帶有
example.com
的A記錄,指向服務器的公共IP地址。 - 帶有
www. example.com
的A記錄www. example.com
www. example.com
指向您服務器的公共IP地址。
- 帶有
第1步 - 安裝和配置Elasticsearch
Ubuntu的默認包存儲庫中不提供Elastic Stack組件。 但是,在添加Elastic的包源列表後,它們可以與APT一起安裝。
所有Elastic Stack的軟件包都使用Elasticsearch簽名密鑰進行簽名,以保護您的系統免受軟件包欺騙。 使用密鑰進行身份驗證的軟件包將被包管理器視爲信任。 在此步驟中,您將導入Elasticsearch公共GPG密鑰並添加Elastic包源列表以安裝Elasticsearch。
首先,運行以下命令將Elasticsearch公共GPG密鑰導入APT:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
接下來,將Elastic源列表添加到sources.list.d
目錄,其中APT將查找新的源:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
接下來,更新您的包列表,以便APT讀取新的Elastic源:
sudo apt update
然後使用以下命令安裝Elasticsearch:
sudo apt install elasticsearch
完成Elasticsearch安裝後,使用首選文本編輯器編輯Elasticsearch的主配置文件elasticsearch.yml
。 在這裏,我們將使用nano
:
sudo nano /etc/elasticsearch/elasticsearch.yml
注意: Elasticsearch的配置文件採用YAML格式,這意味着縮進非常重要! 編輯此文件時,請確保不添加任何額外的空格。
Elasticsearch監聽來自端口9200
上各處的流量。 您需要限制對Elasticsearch實例的外部訪問,以防止外人通過REST API讀取您的數據或關閉您的Elasticsearch集羣。 找到指定network.host
的行,取消註釋,並將其值替換爲localhost
,如下所示:
/etc/elasticsearch/elasticsearch.yml
. . .
network.host: localhost
. . .
按CTRL+X
保存並關閉elasticsearch.yml
,接着是Y
,然後如果你使用的是nano
,則ENTER
。 然後,使用systemctl
啓動Elasticsearch服務:
sudo systemctl start elasticsearch
接下來,運行以下命令以使Elasticsearch在每次服務器啓動時啓動:
sudo systemctl enable elasticsearch
您可以通過發送HTTP請求來測試您的Elasticsearch服務是否正在運行:
curl -X GET "localhost:9200"
您將看到一個響應,顯示有關本地節點的一些基本信息,類似於:
Output{
"name" : "ZlJ0k2h",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "beJf9oPSTbecP7_i8pRVCw",
"version" : {
"number" : "6.4.2",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "04711c2",
"build_date" : "2018-09-26T13:34:09.098244Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
現在Elasticsearch已經啓動並運行,讓我們安裝Kibana,它是Elastic Stack的下一個組件。
第2步 - 安裝和配置Kibana儀表板
Elasticsearch和Logstash需要Java,所以我們現在就安裝它。 我們將安裝最新版本的Oracle Java 8,因爲這是Elasticsearch推薦的版本。 然而,它應該與OpenJDK,如果你決定走這條路線工作正常。
加入甲骨文的Java PPA爲apt
:
sudo add-apt-repository -y ppa:webupd8team/java
更新apt
包數據庫:
sudo apt-get update
使用此命令安裝最新穩定版本的Oracle Java 8(並接受彈出的許可協議):
sudo apt-get -y install oracle-java8-installer
現在安裝了Java 8,我們安裝ElasticSearch。
安裝Elasticsearch
Elasticsearch可以通過添加Elastic的軟件包源列表與軟件包管理器一起安裝。
運行以下命令將Elasticsearch公共GPG密鑰導入apt:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
如果你的提示似乎掛起,它很可能在等待您的用戶密碼(授權sudo
命令)。 如果是這種情況,請輸入您的密碼。
創建Elasticsearch源列表:
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
更新apt
再次包數據庫:
sudo apt-get update
使用此命令安裝Elasticsearch:
sudo apt-get -y install elasticsearch
Elasticsearch現已安裝。 讓我們編輯配置:
sudo nano /etc/elasticsearch/elasticsearch.yml
您將要限制對Elasticsearch實例(端口9200)的外部訪問,因此外部人員無法讀取您的數據或通過HTTP API關閉Elasticsearch集羣。 查找指定線路network.host
,取消它,並與“localhost”的,所以它看起來像這樣替換它的價值:
/etc/elasticsearch/elasticsearch.yml excerpt(updated)
network.host: localhost
保存並退出elasticsearch.yml
。
現在,啓動Elasticsearch:
sudo systemctl restart elasticsearch
然後,運行以下命令在啓動時啓動Elasticsearch:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
現在Elasticsearch啓動並運行,讓我們安裝Kibana。
安裝Kibana
Kibana可以通過添加Elastic的軟件包源列表與軟件包管理器一起安裝。
將Kibana添加到源列表中:
echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list
更新apt
包數據庫:
sudo apt-get update
使用此命令安裝Kibana:
sudo apt-get -y install kibana
Kibana現已安裝。
打開Kibana配置文件進行編輯:
sudo nano /opt/kibana/config/kibana.yml
在Kibana配置文件,找到指定線server.host
,並替換爲“本地主機”的IP地址(由“0.0.0.0”默認值):
/opt/kibana/config/kibana.yml excerpt(updated)
server.host: "localhost"
保存並退出。 這個設置使得Kibana只能訪問localhost。 這很好,因爲我們將使用Nginx反向代理允許外部訪問。
現在啓用Kibana服務,並啓動它:
sudo systemctl daemon-reload
sudo systemctl enable kibana
sudo systemctl start kibana
在我們可以使用Kibana Web界面之前,我們必須設置一個反向代理。 讓我們現在做,與Nginx。
安裝Nginx
因爲我們配置Kibana爲監聽localhost
,我們必須建立一個反向代理,允許它的外部訪問。 我們將使用Nginx爲此目的。
注意
如果你已經有一個Nginx實例,你想使用,請隨意使用它。 只要確保配置Kibana所以它是由你的Nginx服務器訪問(您可能要更改的host
值, /opt/kibana/config/kibana.yml
,您Kibana服務器的專用IP地址或主機名)。 此外,建議您啓用SSL / TLS。
使用apt
安裝Nginx的:
sudo apt-get -y install nginx
使用openssl
創建一個管理員用戶,被稱爲“kibanaadmin”(你應該使用另一個名字),可以訪問Kibana Web界面:
sudo -v
echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
在提示符處輸入密碼。 記住此登錄信息,因爲您需要訪問Kibana Web界面。
現在打開你喜歡的編輯器中的Nginx默認服務器塊:
sudo nano /etc/nginx/sites-available/default
刪除文件的內容,並將以下代碼塊粘貼到文件中。 請務必更新server_name
以匹配您的服務器的名稱或公網IP地址:
/ etc / nginx / sites-available / default
server {
listen 80;
server_name example.com;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;
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;
}
}
保存並退出。 這Nginx的配置您的服務器的HTTP流量直接到Kibana應用程序,它監聽localhost:5601
。 此外,Nginx的將使用htpasswd.users
文件,我們前面創建和要求基本身份驗證。
現在,檢查配置語法錯誤,並重新啓動Nginx如果沒有找到:
sudo nginx -t
sudo systemctl restart nginx
如果您按照16.04的初始服務器設置指南,您已啓用UFW防火牆。 要允許連接到Nginx,我們可以通過鍵入以下內容來調整規則:
sudo ufw allow 'Nginx Full'
Kibana現在是通過您的FQDN或ELK服務器即公網IP地址訪問的http://麋鹿\ _ SERVER \ _Public \ _ip / 。 如果您在網絡瀏覽器中訪問,輸入“kibanaadmin”憑據後,您應該看到一個Kibana歡迎頁面,它將要求您配置索引模式。 讓我們回到那以後,在我們安裝所有其他組件。
安裝Logstash
Logstash包可以從與Elasticsearch相同的存儲庫獲得,我們已經安裝了該公鑰,所以讓我們將Logstash添加到我們的源列表:
echo "deb http://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list
更新apt
包數據庫:
sudo apt-get update
使用此命令安裝Logstash:
sudo apt-get install logstash
已安裝Logstash,但尚未配置。
生成SSL證書
由於我們將使用Filebeat將日誌從我們的客戶端服務器發送到我們的ELK服務器,我們需要創建一個SSL證書和密鑰對。 Filebeat使用該證書來驗證ELK Server的身份。 使用以下命令創建將存儲證書和私鑰的目錄:
sudo mkdir -p /etc/pki/tls/certs
sudo mkdir /etc/pki/tls/private
現在,您有兩個選項用於生成SSL證書。 如果你有一個DNS設置,讓您的客戶端服務器解析服務器ELK的IP地址,使用選項2,否則, 選項1將允許您使用IP地址。
選項1:IP地址
如果沒有DNS設置,這將讓你的服務器,你會收集日誌從,解決您的ELK的IP地址,服務器,你將有你的ELK服務器的私有IP地址添加到subjectAltName
(SAN)字段,我們將要生成的SSL證書。 爲此,請打開OpenSSL配置文件:
sudo nano /etc/ssl/openssl.cnf
找到[ v3_ca ]
文件中的部分,並根據它(代在ELK服務器的私有IP地址 )添加這一行:
/etc/ssl/openssl.cnf excerpt(更新)
subjectAltName = IP: ELK_server_private_IP
保存並退出。
現在產生的相應位置的SSL證書和私鑰( /etc/pki/tls/...
),用下面的命令:
cd /etc/pki/tls
sudo openssl req -config /etc/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
該logstash-forwarder.crt文件將被複制到所有將日誌發送到Logstash的服務器,但我們會做到這一點稍晚。 讓我們完成我們的Logstash配置。 如果您使用此選項去了,跳過選項2並移動到配置Logstash。
選項2:FQDN(DNS)
如果您的DNS設置與您的專用網絡,您應該創建一個A記錄,包含ELK服務器的私有IP地址 - 這個域名將在下一個命令中使用,以生成SSL證書。 或者,您可以使用指向服務器的公共IP地址的記錄。 只要確保您的服務器(您將收集日誌的服務器)將能夠將域名解析到您的ELK服務器。
現在生成的SSL證書和私鑰,在適當的位置( /etc/pki/tls/...
),具有以下(在ELK服務器的FQDN替補):
cd /etc/pki/tls
sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
該logstash-forwarder.crt文件將被複制到所有將日誌發送到Logstash的服務器,但我們會做到這一點稍晚。 讓我們完成我們的Logstash配置。
配置Logstash
Logstash配置文件中的JSON格式,並居住在/etc/logstash/conf.d
。 該配置由三個部分組成:輸入,濾波器和輸出。
讓我們創建一個名爲的配置文件02-beats-input.conf
,併成立了“filebeat”輸入:
sudo nano /etc/logstash/conf.d/02-beats-input.conf
插入下面的輸入配置:
/etc/logstash/conf.d/02-beats-Input.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
保存並退出。 這指定了一個beats
輸入,將監聽TCP端口5044
,它將使用我們前面創建的SSL證書和私鑰。
如果您遵循Ubuntu 16.04初始服務器設置指南,您將配置UFW防火牆。 爲了讓Logstash到端口接收連接5044
,我們需要打開端口:
sudo ufw allow 5044
現在,讓我們創建一個配置文件名爲10-syslog-filter.conf
,在這裏我們將添加一個過濾系統日誌消息:
sudo nano /etc/logstash/conf.d/10-syslog-filter.conf
插入下面的系統日誌過濾器配置:
/etc/logstash/conf.d/10-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}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
保存並退出。 該過濾器會尋找被標記爲“系統日誌”類型(Filebeat)日誌,它會嘗試使用grok
來分析傳入的syslog日誌,使之結構化和查詢能力。
最後,我們將創建一個名爲的配置文件30-elasticsearch-output.conf
:
sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf
插入下面的輸出配置:
/etc/logstash/conf.d/30-elasticsearch-output.conf
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
保存並退出。 該輸出基本上配置Logstash存儲其在運行中Elasticsearch的Beats數據localhost:9200
,在所使用的拍子命名的索引(filebeat,在我們的情況下)。
如果要爲使用Filebeat輸入的其他應用程序添加過濾器,請確保對文件命名,以便在輸入和輸出配置之間進行排序(即在02-和30-之間)。
使用此命令測試Logstash配置:
sudo /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/
幾秒鐘後,它應該顯示Configuration OK
,如果沒有語法錯誤。 否則,請嘗試並讀取錯誤輸出,以查看您的Logstash配置有什麼問題。
重新啓動Logstash並啓用它,以使配置更改生效:
sudo systemctl restart logstash
sudo systemctl enable logstash
Logstash會監聽
接下來,我們將加載示例Kibana儀表板。
加載Kibana儀表板
Elastic提供了幾個樣例Kibana儀表板和Beats索引模式,可以幫助您開始使用Kibana。 雖然我們不會在本教程中使用儀表板,我們仍將加載它們,以便我們可以使用它包括的Filebeat索引模式。
使用curl
將文件下載到你的主目錄:
cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.2.2.zip
安裝unzip
包用這個命令:
sudo apt-get -y install unzip
接下來,提取歸檔的內容:
unzip beats-dashboards-*.zip
並使用以下命令將樣本儀表板,可視化和Beats索引模式加載到Elasticsearch中:
cd beats-dashboards-*
./load.sh
這些是我們剛加載的索引模式:
- packetbeat- *
- topbeat- *
- filebeat- *
- winlogbeat- *
當我們開始使用Kibana時,我們將選擇Filebeat索引模式作爲默認值。
在Elasticsearch中加載Filebeat索引模板
因爲我們計劃使用Filebeat將日誌發送到Elasticsearch,我們應該加載Filebeat索引模板。 索引模板將配置Elasticsearch以智能方式分析傳入的Filebeat字段。
首先,將Filebeat索引模板下載到您的主目錄:
cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json
然後使用此命令加載模板:
curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' [email protected]
如果模板加載正確,您應該看到這樣的消息:
Output:{
"acknowledged" : true
}
現在我們的ELK服務器已準備好接收Filebeat數據,讓我們轉到在每個客戶端服務器上設置Filebeat。
設置Filebeat(添加客戶端服務器)
對於您要將日誌發送到ELK服務器上的Logstash的每個Ubuntu或Debian服務器,請執行以下步驟。 有關在基於Red Hat Linux發行版(如RHEL,CentOS的,等等)安裝Filebeat說明,請參閱設置Filebeat(添加客戶端服務器)部分本教程的CentOS的變化。
複製SSL證書
在您的ELK服務器 ,複製您創建的客戶端服務器的SSL證書(替代客戶端服務器的地址和自己的登錄):
scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp
提供登錄憑據後,請確保證書複製成功。 它是客戶端服務器和ELK服務器之間的通信所必需的。
現在,你的客戶端服務器上,複製ELK服務器的SSL證書到相應位置( /etc/pki/tls/certs
):
sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/
現在我們將安裝Topbeat包。
安裝Filebeat包
在客戶端服務器 ,創建了Beats源列表:
echo "deb https://packages.elastic.co/beats/apt stable main" | sudo tee -a /etc/apt/sources.list.d/beats.list
它還使用與Elasticsearch相同的GPG密鑰,可以使用此命令安裝:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
然後安裝Filebeat包:
sudo apt-get update
sudo apt-get install filebeat
已安裝Filebeat,但尚未配置。
配置Filebeat
現在我們將配置Filebeat連接到我們的ELK服務器上的Logstash。 本節將逐步介紹如何修改Filebeat附帶的示例配置文件。 當你完成這些步驟,你應該有一個看起來像一個文件這樣 。
在客戶端服務器 ,創建和編輯Filebeat配置文件:
sudo nano /etc/filebeat/filebeat.yml
注意
Filebeat的配置文件是YAML格式的,這意味着縮進是非常重要的! 請務必使用這些說明中指定的相同數量的空格。
接近文件的頂部,你會看到prospectors
節,這是你可以定義指定淘金哪些日誌文件應運,他們應該如何處理。 每個探礦者被標明-
字符。
我們將修改現有探礦發送syslog
和auth.log
到Logstash。 在paths
,註釋掉- /var/log/*.log
文件。 這將防止Filebeat發送每.log
在那個目錄中Logstash。 然後,添加新條目syslog
和auth.log
。 完成後應該看起來像這樣:
/etc/filebeat/filebeat.yml excerpt 1/5
...
paths:
- /var/log/auth.log
- /var/log/syslog
# - /var/log/*.log
...
然後,找到指定行document_type:
取消並改變其值設置爲“系統日誌”。 在修改後應該看起來像這樣:
/etc/filebeat/filebeat.yml excerpt 2/5
...
document_type: syslog
...
這指定在這個探礦的日誌類型的syslog(這是我們Logstash過濾器正在尋找的類型)。
如果要將其他文件發送到ELK服務器,或對Filebeat處理日誌的方式進行任何更改,請隨時修改或添加探測器條目。
接下來,根據output
部分,找到這行elasticsearch:
這表明Elasticsearch輸出部分(我們不打算使用) 刪除或註釋掉整個Elasticsearch輸出部分 (最多這行#logstash:
)。
找到註釋掉Logstash輸出部分,由這行表示#logstash:
並通過刪除前面的註釋它#
。 在本節中,取消對hosts: ["localhost:5044"]
行。 更改localhost
到您的ELK服務器的私有IP地址(或主機名,如果您使用該選項了):
/etc/filebeat/filebeat.yml excerpt 3/5
### Logstash as output
logstash:
# The Logstash hosts
hosts: ["ELK_server_private_IP:5044"]
這將配置Filebeat連接到Logstash在端口ELK服務器5044
(我們指定的Logstash輸入早些時候端口)。
直屬hosts
條目,並使用相同的縮進,加入這一行:
/etc/filebeat/filebeat.yml excerpt 4/5
### Logstash as output
logstash:
# The Logstash hosts
hosts: ["ELK_server_private_IP:5044"]
bulk_max_size: 1024
接下來,找到了tls
部分,並取消它。 然後取消對指定線路certificate_authorities
,它的值更改爲["/etc/pki/tls/certs/logstash-forwarder.crt"]
。 它應該看起來像這樣:
/etc/filebeat/filebeat.yml excerpt 5/5
...
tls:
# List of root certificates for HTTPS server verifications
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
這將Filebeat配置爲使用我們在ELK服務器上創建的SSL證書。
保存並退出。
現在重新啓動Filebeat將我們的更改放置到位:
sudo systemctl restart filebeat
sudo systemctl enable filebeat
同樣,如果你如果你的Filebeat配置是否正確還不能確定,比較它反對這個例子Filebeat配置 。
現在Filebeat發送syslog
和auth.log
到Logstash您的ELK服務器上! 對於您要收集日誌的所有其他服務器重複此部分。
測試Filebeat安裝
如果您的ELK已正確設置,Filebeat(在客戶端服務器上)應將您的日誌發送到ELK服務器上的Logstash。 Logstash應該使用我們先前導入的索引將Filebeat數據加載到Elasticsearch中。
在您的ELK服務器 ,驗證Elasticsearch確實通過查詢Filebeat指數使用此命令接收數據:
curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
你應該看到一堆看起來像這樣的輸出:
Sample Output:...
{
"_index" : "filebeat-2016.01.29",
"_type" : "log",
"_id" : "AVKO98yuaHvsHQLa53HE",
"_score" : 1.0,
"_source":{"message":"Feb 3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
}
...
如果您的輸出顯示總計0次點擊,Elasticsearch不會在您搜索的索引下加載任何日誌,您應該檢查您的設置是否有錯誤。 如果收到預期的輸出,請繼續下一步。
連接到Kibana
當您在要收集日誌的所有服務器上完成Filebeat設置後,讓我們看看Kibana,我們之前安裝的Web界面。
在Web瀏覽器中,轉到您的ELK服務器的FQDN或公共IP地址。 輸入“kibanaadmin”憑據後,您應該看到一個頁面,提示您配置默認索引模式:
來吧,從索引模式菜單(左側)選擇filebeat- *,然後單擊星(設置爲默認索引)按鈕設置Filebeat指數爲默認值。
現在點擊頂部導航欄中的鏈接發現 。 默認情況下,這將顯示過去15分鐘內的所有日誌數據。 您應該會看到帶有日誌事件的直方圖,其中包含以下日誌消息:
現在,在那裏不會有太多,因爲你只是從您的客戶端服務器收集系統日誌。 在這裏,您可以搜索和瀏覽您的日誌。 您還可以自定義信息中心。
嘗試以下事項:
- 搜索“root”以查看是否有人嘗試以root身份登錄到您的服務器
- 搜索一個特定的主機名(搜索
host: " hostname "
) - 通過在直方圖上或從上面的菜單中選擇一個區域來更改時間範圍
- 點擊直方圖下面的消息,查看數據是如何過濾的
Kibana有許多其他功能,如圖形和過濾,所以隨便捅!
結論
現在你的系統日誌通過Elasticsearch和Logstash集中,你可以用Kibana可視化它們,你應該有一個很好的開始,集中所有重要的日誌。 記住,你可以發送幾乎任何類型的日誌或索引的數據到Logstash,但如果數據被解析和結構與grok,數據變得更加有用。
爲了提高新ELK,你應該考慮收集和過濾Logstash你的其他日誌和創造Kibana儀表板 。 您可能還需要通過使用Topbeat收集系統度量與ELK。 所有這些主題都在本系列的其他教程中介紹。
祝你好運!
轉自:https://www.howtoing.com/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-16-04