搭建一個簡單的日誌實時分析平臺---ELK
人們常常說資料如金,可是,能被利用起的資料,才是“金”。而網際網路的資料,常常以日誌的媒介的形式存在,並需要從中提取其中的"資料"。
從這些資料中,我們可以做使用者畫像(每個使用者都點了什麼廣告,對哪些開源技術感興趣),安全審計,安全防護(如果1小時內登入請求數到達一定值就報警),業務資料統計(如開源中國每天的部落格數是多少,視覺化編輯格式和markdown格式各佔比例是多少)等等。
之所以能做這些,是因為使用者的所有的行為,都將被記錄在nginx日誌中或其它web伺服器的日誌中。日誌分析要做的就是將這些日誌進行結構化,方便我們的業務人員快速查詢。日誌分析平臺要做的就是這些。
說完這些,你是不是覺得日誌分析平臺很難做,需要十人的團隊加班幾個月才能完成?
自從有了Elasticsearch、Logstash、Kibana,俗稱ELK,小公司也可以很輕鬆地做日誌分析了。說白了,1天幾G的日誌,ELK完全可以吃得消。就像標題說的,只需要1個人半小時就可以搭建好了(剛開始的時候折騰了一天,等熟練之後半個小時完成還是可以的)。
本文目的就是教你如何在搭建一個日誌分析平臺的雛形。有了這個雛形,你可以慢慢迭代出更強大,更適合你業務的日誌分析平臺。
二、簡介
在我們日常生活中,我們經常需要回顧以前發生的一些事情;或者,當出現了一些問題的時候,可以從某些地方去查詢原因,尋找發生問題的痕跡。無可避免需要用到文字的、影象的等等不同形式的記錄。用計算機的術語表達,就是 LOG,或日誌。
日誌,對於任何系統來說都是及其重要的組成部分。在計算機系統裡面,更是如此。但是由於現在的計算機系統大多比較複雜,很多系統都不是在一個地方,甚至都是跨國界的;即使是在一個地方的系統,也有不同的來源,比如,作業系統,應用服務,業務邏輯等等。他們都在不停產生各種各樣的日誌資料。根據不完全統計,我們全球每天大約要產生2EB(10的18次方)的資料。
面對如此海量的資料,又是分佈在各個不同地方,如果我們需要去查詢一些重要的資訊,難道還是使用傳統的方法,去登陸到一臺臺機器上檢視?看來傳統的工具和方法已經顯得非常笨拙和低效了。於是,一些聰明人就提出了建立一套集中式的方法,把不同來源的資料集中整合到一個地方。
一個完整的集中式日誌系統,是離不開以下幾個主要特點的。
# 收集--能夠採集多種來源的日誌資料
# 傳輸--能夠穩定的把日誌資料傳輸到中央系統
# 儲存--如何儲存日誌資料
# 分析--可以支援UI分析
# 警告--能夠提供錯誤報告,監控機制
ELK完美的解決上述場景。
三、市場上的產品
基於上述思路,於是許多產品或方案就應運而生了。比如,簡單的Rsyslog,Syslog-ng;商業化的Splunk ;開源的有FaceBook公司的Scribe,Apache的Chukwa,Linkedin的Kafak,Cloudera的Fluentd,ELK等等。
在上述產品中,Splunk是一款非常優秀的產品,但是它是商業產品,價格昂貴,讓許多人望而卻步。
直到ELK的出現,讓大家又多了一種選擇。相對於其他幾款開源軟體來說,本文重點介紹ELK。
四、ELK Stack(ELK 協議棧)
ELK不是一款軟體,而是Elasticsearch、Logstash和Kibana三種軟體產品的首字母縮寫。這三者都是開源軟體,通常配合使用,而且又先後歸於Elastic.co公司名下,所以被簡稱為ELK Stack(ELK 協議棧)。根據Google Trend的資訊顯示,ELK Stack已經成為目前最流行的集中式日誌解決方案。
# Elasticsearch:分散式搜尋和分析引擎,具有高可伸縮、高可靠和易管理等特點。基於Apache Lucene構建,使用Java語言編寫,能對大容量的資料進行接近實時的儲存、搜尋和分析操作。通常被用作某些應用的基礎搜尋引擎,使其具有複雜的搜尋功能;
# Logstash:資料收集引擎。使用JRuby語言編寫,它支援動態的從各種資料來源蒐集資料,並對資料進行過濾、分析、豐富、統一格式等操作,然後儲存到使用者指定的位置;
# Kibana:資料分析和視覺化平臺。使用JavaScript語言編寫,為Elasticsearch提供分析和視覺化的Web平臺。它可以在Elasticsearch的索引中查詢,互動資料,並生成各種維度的表圖;
# Filebeat:ELK協議棧的新成員,一個輕量級開源日誌檔案資料蒐集器,基於Logstash-Forwarder原始碼開發,是對它的替代。在需要採集日誌資料的server上安裝Filebeat,並指定日誌目錄或日誌檔案後,Filebeat就能讀取資料,迅速傳送到Logstash進行解析,亦或直接傳送到Elasticsearch進行集中式儲存和分析。
特別還提到一下Logstash-forwarder,這是一款使用Go語言編寫的日誌傳輸工具。由於Logstash是使用Java來執行,為了提升網路傳輸效率,我們並不在客戶系統上面使用Logstash來傳輸資料。這款軟體就是原來的Lumberjack,今後慢慢將被Elastic.co公司的另外一款產品Beat吸收合併到Filebeat中。
五、ELK常用架構及使用場景
最簡單架構
在這種架構中,只有一個Logstash、Elasticsearch和Kibana例項。Logstash通過輸入外掛從多種資料來源(比如日誌檔案、標準輸入Stdin等)獲取資料,再經過濾外掛加工資料,然後經Elasticsearch輸出外掛輸出到Elasticsearch,通過Kibana展示。詳見圖 1。
這種架構非常簡單,使用場景也有限。初學者可以搭建這個架構,瞭解ELK如何工作。
Logstash作為日誌蒐集器
這種架構是對上面架構的擴充套件,把一個Logstash資料蒐集節點擴充套件到多個,分佈於多臺機器,將解析好的資料傳送到Elasticsearch server進行儲存,最後在Kibana查詢、生成日誌報表等。詳見圖 2。
這種結構因為需要在各個伺服器上部署Logstash,而它比較消耗CPU和記憶體資源,所以比較適合計算資源豐富的伺服器,否則容易造成伺服器效能下降,甚至可能導致無法正常工作。
Beats作為日誌蒐集器
這種架構引入Beats作為日誌蒐集器。目前Beats包括四種:
# Packetbeat(蒐集網路流量資料);
# Topbeat(蒐集系統、程序和檔案系統級別的CPU和記憶體使用情況等資料);
# Filebeat(蒐集檔案資料);
# Winlogbeat(蒐集Windows事件日誌資料)。
Beats 將蒐集到的資料傳送到 Logstash,經 Logstash 解析、過濾後,將其傳送到 Elasticsearch 儲存,並由 Kibana 呈現給使用者。詳見圖 3。
這種架構解決了Logstash在各伺服器節點上佔用系統資源高的問題。相比Logstash,Beats所佔系統的CPU和記憶體幾乎可以忽略不計。另外,Beats和Logstash之間支援SSL/TLS加密傳輸,客戶端和伺服器雙向認證,保證了通訊安全。
因此這種架構適合對資料安全性要求較高,同時各伺服器效能比較敏感的場景。
引入訊息佇列機制的架構
這種架構使用Logstash從各個資料來源蒐集資料,然後經訊息佇列輸出外掛輸出到訊息佇列中。目前Logstash支援Kafka、Redis、RabbitMQ等常見訊息佇列。然後Logstash通過訊息佇列輸入外掛從佇列中獲取資料,分析過濾後經輸出外掛傳送到Elasticsearch,最後通過Kibana展示。詳見圖 4。
這種架構適合於日誌規模比較龐大的情況。但由於Logstash日誌解析節點和Elasticsearch的負荷比較重,可將他們配置為叢集模式,以分擔負荷。引入訊息佇列,均衡了網路傳輸,從而降低了網路閉塞,尤其是丟失資料的可能性,但依然存在Logstash佔用系統資源過多的問題。
基於Filebeat架構的配置部署詳解
前面提到Filebeat已經完全替代了Logstash-Forwarder成為新一代的日誌採集器,同時鑑於它輕量、安全等特點,越來越多人開始使用它。這個章節將詳細講解如何部署基於Filebeat的ELK集中式日誌解決方案,具體架構見圖 5。
因為免費的ELK沒有任何安全機制,所以這裡使用了Nginx作反向代理,避免使用者直接訪問Kibana伺服器。加上配置Nginx實現簡單的使用者認證,一定程度上提高安全性。另外,Nginx本身具有負載均衡的作用,能夠提高系統訪問效能。
六、在Debian 8.6 64位中實戰
具體安裝過程如下
步驟 1,安裝 JDK
步驟 2,安裝 Elasticsearch
步驟 3,安裝 Kibana
步驟 4,安裝 Nginx
步驟 5,安裝 Logstash
步驟 6,配置 Logstash
步驟 7,安裝 Logstash-forwarder
步驟 8,最終驗證
注:我這裡用了兩臺Debian 8.6 64位(你用Ubuntu也行)虛擬機器,IP為192.168.102.34和192.168.102.35
步驟 1,安裝JDK
Elasticsearch要求至少Java 7。一般推薦使用Oracle JDK 1.8或者OpenJDK 1.8。我們這裡使用Oracle JDK 1.8。
[email protected]:~# tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr
[email protected]:~# vi /etc/profile
export JAVA_HOME=/usr/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[email protected]:~# source /etc/profile
[email protected]:~# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
注意:在我這個Debian 8.6虛擬機器/etc/profile中配置java的環境變數的時候還必須按上面那樣寫,按下面這樣寫(在Centos和RedHat中就好使)還不行,可能是Linux不同?完全不明所以。
export JAVA_HOME=/usr/jdk1.8.0_91
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
建立elk使用者並賦予sudo許可權:
[email protected]:~# adduser elk
注意:Centos 7.2分兩步,adduser elk和passwd elk
[email protected]:~# chmod +w /etc/sudoers
[email protected]:~# vi /etc/sudoers
新增:
elk ALL=(ALL:ALL) ALL
[email protected]:~# chmod -w /etc/sudoers
步驟 2,安裝Elasticsearch
[email protected]:~$ wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.1.0/elasticsearch-2.1.0.tar.gz
[email protected]:~$ tar -zxvf elasticsearch-2.1.0.tar.gz
[email protected]:~$ cd elasticsearch-2.1.0/config/
[email protected]:~/elasticsearch-2.1.0/config$ vi elasticsearch.yml
找到 # network.host 一行,修改成以下:
network.host: localhost
啟動elasticsearch:
[email protected]:~/elasticsearch-2.1.0/config$ cd ../bin/
[email protected]:~/elasticsearch-2.1.0/bin$ ./elasticsearch
驗證elasticsearch:
[email protected]:~$ curl 'localhost:9200/'
{
"name" : "Bombshell",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.0",
"build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87",
"build_timestamp" : "2015-11-18T22:40:03Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
注:如果沒有curl命令,則可用apt-get install curl來安裝步驟 3,安裝Kibana
[email protected]:~$ wget https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz
[email protected]:~$ tar -zxvf kibana-4.3.0-linux-x64.tar.gz
[email protected]:~$ cd kibana-4.3.0-linux-x64/config/
[email protected]:~/kibana-4.3.0-linux-x64/config$ vi kibana.yml
找到 # server.host,修改成以下:
server.host: "localhost"
啟動Kibana:
[email protected]:~/kibana-4.3.0-linux-x64/config$ cd ../bin/
[email protected]:~/kibana-4.3.0-linux-x64/bin$ ./kibana
驗證Kibana:
由於我們是配置在localhost,所以是無法直接訪問Web頁面的。
可以使用netstat來檢查預設埠5601,或者使用curl:
[email protected]:~$ curl localhost:5601
<script>var hashRoute = '/app/kibana';
var defaultRoute = '/app/kibana';
var hash = window.location.hash;
if (hash.length) {
window.location = hashRoute + hash;
} else {
window.location = defaultRoute;
}</script>
步驟 4,安裝NginxNginx提供了反向代理服務,可以使外面的請求被髮送到內部的應用上。
在/etc/apt/sources.list中新增如下內容:
deb http://nginx.org/packages/debian/ jessie nginx
deb-src http://nginx.org/packages/debian/ jessie nginx
然後,還需要更新並匯入升級Key,否則無法使用;
[email protected]:~$ wget http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key && sudo apt-get update && sudo apt-get install nginx apache2-utils
修改Nginx配置檔案:
[email protected]:~$ sudo vi /etc/nginx/conf.d/default.conf
找到server_name,可以修改為用IP,或者使用FQDN。我這裡沒有修改,還是為預設的localhost
注意:這裡我把listen 80;改為了81。因為如果不改的話我這個虛擬機器的apache2已經在佔用80埠了,所以會導致Nginx啟不來
[email protected]:~$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 925 root 4u IPv6 15008 0t0 TCP *:http (LISTEN)
apache2 1445 www-data 4u IPv6 15008 0t0 TCP *:http (LISTEN)
apache2 1446 www-data 4u IPv6 15008 0t0 TCP *:http (LISTEN)
apache2 1447 www-data 4u IPv6 15008 0t0 TCP *:http (LISTEN)
然後再加入下面一段內容:server {
listen 82;
server_name example.com;
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服務:[email protected]:~$ sudo service nginx restart
驗證訪問:
http://192.168.102.34:81
步驟 5,安裝Logstash
[email protected]:~$ wget https://download.elastic.co/logstash/logstash/logstash-2.1.1.tar.gz
[email protected]:~$ tar -zxvf logstash-2.1.1.tar.gz
驗證Logstash:
[email protected]:~$ cd logstash-2.1.1/bin/
[email protected]:~/logstash-2.1.1/bin$ ./logstash -e 'input { stdin { } } output { stdout {} }'
Settings: Default filter workers: 1
Logstash startup completed
輸入:hello elk stack
輸出:2018-01-05T09:30:00.946Z h34 hello elk stack
說明Logstash已經可以正常工作了。按CTRL-D退出
步驟 6,配置Logstash
我們需要配置Logstash以指明從哪裡讀取資料,向哪裡輸出資料。這個過程我們稱之為定義Logstash管道(Logstash Pipeline)。
通常一個管道需要包括必須的輸入(input),輸出(output),和一個可選專案Filter。
每一個輸入/輸出塊裡面都可以包含多個源。Filter是定義如何按照使用者指定的格式寫資料。
由於我們這次是使用logstash-forwarder從客戶機向伺服器來傳輸資料,作為輸入資料來源。所以,我們首先需要配置SSL證書(Certification)。用來在客戶機和伺服器之間驗證身份。
配置SSL:
[email protected]:~$ sudo mkdir -p /etc/pki/tls/certs /etc/pki/tls/private
[email protected]:~$ sudo vi /etc/ssl/openssl.cnf
找到[ v3_c ]段,新增下面一行,儲存退出。
subjectAltName = IP: 192.168.102.34
[email protected]:~$ cd /etc/pki/tls
[email protected]:/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-forwarder的時候使用到。
配置Logstash管道檔案:
[email protected]:/etc/pki/tls$ cd /home/elk/logstash-2.1.1
[email protected]:~/logstash-2.1.1$ mkdir conf
[email protected]:~/logstash-2.1.1$ cd conf
[email protected]:~/logstash-2.1.1/conf$ vi simple.conf
新增以下內容:
input {
lumberjack {
port => 5043
type => "logs"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
啟動Logstsh:[email protected]:~/logstash-2.1.1/conf$ cd ../bin
[email protected]:~/logstash-2.1.1/bin$ ./logstash -f ../conf/simple.conf
步驟 7,安裝Logstash-forwarder
注意:Logstash-forwarder也是一個開源專案,最早是由lumberjack改名而來。被吸收合併到了Elastic.co公司的另外一個產品Beat中的FileBeat。如果是用FileBeat,配置稍微有些不一樣,具體需要去參考官網。Logstash-forwarder是安裝在另外一臺機器192.168.102.35上。用來模擬客戶機傳輸資料到Logstash伺服器。
配置Logstash-forwarder安裝源:在/etc/apt/sources.list中新增以下內容
deb http://packages.elastic.co/logstashforwarder/debian stable main
[email protected]:~$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
OK
安裝軟體包:
[email protected]:~$ sudo apt-get update
[email protected]:~$ sudo apt-get install Logstash-forwarder
配置SSL:
[email protected]:~$ sudo mkdir -p /etc/pki/tls/certs
把在步驟六中在Logstash伺服器192.168.102.34上產生的ssl證書檔案拷貝到剛剛創建出來的目錄下:
[email protected]:~$ sudo scp /etc/pki/tls/certs/logstash-forwarder.crt 192.168.102.35:/etc/pki/tls/certs/
配置Logstash-forwarder:
[email protected]:~$ sudo vi /etc/logstash-forwarder.conf
在network段("network": {),修改如下:
"servers": [ "192.168.102.34:5043" ],
"ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt",
"timeout": 15
在files段("files": [),修改如下:
{
"paths": [
"/var/log/syslog",
"/var/log/auth.log"
],
"fields": { "type": "syslog" }
}
啟動Logstash-forwarder:
sudo service logstash-forwarder start
驗證Logstash-forwarder:
sudo service logstash-forwarder status
● logstash-forwarder.service - LSB: no description given
Loaded: loaded (/etc/init.d/logstash-forwarder)
Active: active (running) since Mon 2018-01-08 14:56:30 CST; 20s ago
Process: 1765 ExecStart=/etc/init.d/logstash-forwarder start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/logstash-forwarder.service
└─1767 /opt/logstash-forwarder/bin/logstash-forwarder -config /etc/logstash-forwarder.conf
Jan 08 14:56:30 h35 /etc/init.d/logstash-forwarder[1766]: Attempting 'start' on logstash-forwarder
Jan 08 14:56:30 h35 /etc/init.d/logstash-forwarder[1768]: logstash-forwarder started
Jan 08 14:56:30 h35 logstash-forwarder[1765]: logstash-forwarder started
Jan 08 14:56:30 h35 systemd[1]: Started LSB: no description given.
注意:如果有錯誤,則需要去/var/log/logstash-forwarder目錄下面檢查。步驟 8,最後驗證
在前面安裝Kibana的時候,曾經有過驗證。不過,當時沒有資料,開啟Web頁面的時候,將如下所示:無資料初始頁面
現在,由於logstash-forwarder已經開始傳輸資料了,再次開啟Web頁面,將如下所示:配置索引頁面
點選建立按鈕(Create),再選擇Discover,可以看到如下畫面:資料展示頁面
至此,所有部件的工作都可以正常使用了。關於如何具體使用Kibana就不在本文中加以描述了,有興趣的同學可以參考官網。
注:步驟一在兩臺虛擬中都執行,步驟2-6在192.168.102.34中執行,步驟7在192.168.102.35中執行
七、在Centos 7.2 64位中實戰
注:我這裡用了兩臺Centos虛擬機器,ip分別為192.168.205.154和192.168.205.155
除了和上面在Debian中實戰的步驟4、步驟6中配置SSL和步驟7不一樣外,其他步驟都一樣
注意:在開始之前首先要兩臺虛擬機器都要關閉防火牆,要不然會出現各種問題,很煩
systemctl disable firewalld
systemctl stop firewalld
步驟 4,安裝Nginx
配置Nginx官方yum源
[[email protected] ~]$ sudo vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
或者執行sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
如果是Centos6版本的話就執行rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
安裝軟體
[[email protected] ~]$ sudo yum -y install nginx httpd-tools
注意:你有可能會遇到這個報錯
Error: Package: 1:nginx-1.12.2-1.el7_4.ngx.x86_64 (nginx)
Requires: libcrypto.so.10(OPENSSL_1.0.2)(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
解決:執行sudo yum clean all[[email protected] ~]$ sudo vi /etc/nginx/nginx.conf
檢查是否 http 塊(http{...})含有下面這一行:
include /etc/nginx/conf.d/*conf
為Kibana建立一個配置檔案
[[email protected] ~]$ sudo vi /etc/nginx/conf.d/kibana.conf
server {
listen 81;
server_name example.com;
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服務[[email protected] ~]$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[[email protected] ~]$ sudo systemctl start nginx或者sudo systemctl start nginx.service
驗證訪問
http://192.168.205.154:80
http://192.168.205.154:81
注意:一開始我訪問81的時候出現這個報錯,後來才發現是沒有關閉SELinux的原因,其實再這裡關閉的有點晚(當我只關掉192.168.205.154的SELinux就可以了,但最好還是兩臺虛擬機器都關了吧),你完全可以在一開始和關閉防火牆的時候一塊把SELinux也關閉了
解決:
臨時關閉,不用重啟機器:
setenforce 0
永久關閉,修改配置檔案後需要重啟機器:
vi /etc/sysconfig/selinux
SELINUX=disabled
步驟6中的配置SSL:
[[email protected] ~]$ sudo vi /etc/pki/tls/openssl.cnf
找到[ v3_ca ]段,新增下面一行,儲存退出。
subjectAltName = IP: 192.168.205.154
[email protected]:~$ cd /etc/pki/tls
[email protected]:/etc/pki/tls$ sudo openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
步驟 7,安裝Logstash-forwarder(192.168.205.155中執行)
配置Logstash-forwarder安裝源
[[email protected] ~]$ sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
[[email protected] ~]$ sudo vi /etc/yum.repos.d/logstash-forwarder.repo
[logstash-forwarder]
name=logstash-forwarder repository
baseurl=http://packages.elastic.co/logstashforwarder/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1
安裝軟體包
[[email protected] ~]$ sudo yum -y install logstash-forwarder
配置SSL
把在步驟六中在Logstash伺服器上產生的ssl證書檔案拷貝到剛剛創建出來的目錄下:
[[email protected] ~]$ sudo scp /etc/pki/tls/certs/logstash-forwarder.crt 192.168.205.155:/etc/pki/tls/certs/(這一步192.168.205.154中執行)
配置Logstash-forwarder
[[email protected] ~]$ sudo vi /etc/logstash-forwarder.conf
在network段("network": {),修改如下:
"servers": [ "192.168.205.154:5043" ],
"ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt",
"timeout": 15
在files段("files": [),修改如下:
{
"paths": [
"/var/log/*log",
"/var/log/messages"
],
"fields": { "type": "syslog" }
}
啟動Logstash-forwarder:
sudo service logstash-forwarder start
驗證Logstash-forwarder:
sudo service logstash-forwarder status
logstash-forwarder is running
八、安裝中所遇到的坑:
1.虛擬機器的記憶體太小
一開始我的兩個虛擬機器都是512M記憶體的,結果logstash接收一會兒資料就會迴圈反覆報下面這個錯,後來我把192.168.205.154記憶體大小改為了3052,192.168.205.155還是512,我的win10本地記憶體為8G
Lumberjack input: the pipeline is blocked, temporary refusing new connection. {:level=>:warn}
Lumberjack input: the pipeline is blocked, temporary refusing new connection. {:level=>:warn}
Lumberjack input: the pipeline is blocked, temporary refusing new connection. {:level=>:warn}
Lumberjack input: the pipeline is blocked, temporary refusing new connection. {:level=>:warn}
Lumberjack input: the pipeline is blocked, temporary refusing new connection. {:level=>:warn}
2.虛擬機器的系統時間最好同步一下在Debian 8.6中安裝時:時間沒同步的話Logstash-forwarder可能啟動不起來,也可能Logstash-forwarder啟動後無法將資料傳給Logstash,Linux時間同步請參考http://blog.csdn.net/m0_37739193/article/details/77850469
在Centos 7.2中:點選建立按鈕(Create),再選擇Discover,可以看到如下畫面:
解決:
yum -y install ntpdate
ntpdate 0.uk.pool.ntp.org
文章參考出處:
https://www.cnblogs.com/kevingrace/p/5919021.html
https://www.zybuluo.com/dume2007/note/665868
https://www.ibm.com/developerworks/cn/opensource/os-cn-elk/index.html
相關推薦
搭建一個簡單的日誌實時分析平臺---ELK
一、前言 人們常常說資料如金,可是,能被利用起的資料,才是“金”。而網際網路的資料,常常以日誌的媒介的形式存在,並需要從中提取其中的"資料"。 從這些資料中,我們可以做使用者畫像(每個使用者都點了什麼廣告,對哪些開源技術感興趣),安全審計,安全防護(如果1小時內登
ELK搭建網際網路億級日誌實時分析平臺
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseu
ELK搭建實時日誌分析平臺(elk+kafka+metricbeat)-搭建說明
elk搭建實時日誌分析平臺數據流向:metricbeat->kafka->logstash->elasticsearch->kibana.應用分布:主機應用備註192.168.30.121java version "1.8.0_144"zookeeper-3.4.10.tar.gzka
ELK搭建實時日誌分析平臺(elk+kafka+metricbeat)-KAFKA搭建
kafka搭建(elk+kafka+metricbeat)一、kafka搭建建立elk目錄:mkdir /usr/loca/elk安裝zookeeper:192.168.30.121:192.168.30.122:192.168.30.123:3. kafka安裝: a. 192.168.30.121
ELK實時日誌分析平臺(elk+kafka+metricbeat)-logstash(四)
elk-logstash搭建1. 安裝並測試: 2. 添加配置: 3. 啟動檢查:本文出自 “linux” 博客,請務必保留此出處http://1054054.blog.51cto.com/1044054/1968431ELK實時日誌分析平臺(elk+kafka+metricbeat)-logs
Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日誌集中分析平臺
Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日誌集中分析平臺 日誌監控和分析在保障業務穩定執行時,起到了很重要的作用,不過一般情況下日誌都分散在各個生產伺服器,且開發人員無法登陸生產伺服器,這時候就需要一個集中式的日誌收集裝置,對日誌中
結合Docker快速搭建ELK日誌收集分析平臺
作者:馬哥Linux運維-Eason ELK Stack ELK (Elasticsearch + Logstash + Kibana),是一個開源的日誌收集平臺,用於收集各種客戶端日誌檔案在同一個平臺上面做資料分析。 Introduction Elasticsearch, 基於json分析搜尋引擎
ElasticSearch+Logstash+Filebeat+Kibana叢集日誌管理分析平臺搭建
一、ELK搜尋引擎原理介紹 在使用搜索引擎是你可能會覺得很簡單方便,只需要在搜尋欄輸入想要的關鍵字就能顯示出想要的結果。但在這簡單的操作背後是搜尋引擎複雜的邏輯和許多元件協同工作的結果。 搜尋引擎的元件一般可分為兩大類:索引元件和搜尋元件。在搜尋之前搜尋引擎必須把可搜尋的所有資料做整合處理並構建索
自己動手搭建一個簡單的基於Hadoop的離線分析系統之一——網路爬蟲
自己動手搭建一個簡單的基於Hadoop的離線分析系統之一——網路爬蟲 之前對大資料頗感興趣,在學習了一個月的相關原理和應用後,感覺自己需要動手一個實戰專案來鞏固之前學到的東西,加之很早之前就接觸過一些爬蟲知識,因此利用手上現有的資源(一臺膝上型電腦)來搭建一個關於房屋租賃的簡
日誌分析平臺ELK之搜尋引擎Elasticsearch叢集
一、簡介 什麼是ELK?ELK是Elasticsearch、Logstash、Kibana這三個軟體的首字母縮寫;其中elasticsearch是用來做資料的儲存和搜尋的搜尋引擎;logstash是資料收集處理平臺,它能夠對特定的資料做分析、切詞、收集、過濾等等處理,通常用於對日誌的處理;kibana
日誌分析平臺ELK之日誌收集器logstash
前文我們聊解了什麼是elk,elk中的elasticsearch叢集相關元件和叢集搭建以及es叢集常用介面的說明和使用,回顧請檢視考https://www.cnblogs.com/qiuhom-1874/p/13758006.html;今天我們來了解下ELK中的日誌收集器logstash; logst
日誌分析平臺ELK之日誌收集器logstash常用外掛配置
前文我們瞭解了logstash的工作流程以及基本的收集日誌相關配置,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13761906.html;今天我們來了解下logstash的常用input外掛和filter外掛的相關配置; 先說filter外掛吧,繼續上一篇部
日誌分析平臺ELK之日誌收集器filebeat
前面我們瞭解了elk叢集中的logstash的用法,使用logstash處理日誌挺好的,但是有一個缺陷,就是太慢了;當然logstash慢的原因是它依賴jruby虛擬機器,jruby虛擬機器就是用java語言開發的ruby虛擬機器,本身java程式執行在jvm上就已經很慢了,而logstash還要執行在用
1010針對一個binlog日誌的分析
delet value stop 1=1 err sql語句 cto not cnblogs 針對一個BINLOG日誌的分析 -- 當前binlog_format | ROW[[email protected] mysql]# cat wang1010.txt/*
【轉】使用webmagic搭建一個簡單的爬蟲
class 直接 了解 pid 個數 粘貼 body 教程 相關配置 【轉】使用webmagic搭建一個簡單的爬蟲 剛剛接觸爬蟲,聽說webmagic很不錯,於是就了解了一下。 webmagic的是一個無須配置、便於二次開發的爬蟲框架,它提供簡單靈活的API,只需少量代碼
直播源碼如何搭建一個屬於自己的直播平臺?
直播源碼 直播系統 直播軟件 現在直播非常火爆,可以從PC或手機直播,然後從PC或是手機或是 支持HTML5的瀏覽器 收看。但是,你知道直播平臺後面的技術和實現原理碼?正好去年過年的時候,一個朋友破解了AirPlay和Chromecast協議,然後開發了一套技術能夠截獲和播放任何手機(iOS或是A
利用ngxtop工具對nginx日誌實時分析
nginx參考:通過ngxtop實時監控webserver的訪問情況一、部署準備:python2.7.3+、SQLite(否則會報錯)編譯安裝SQLitecd /usr/local/src && wget #下載安裝包,最新安裝包請參考tar xf sqlite-autoconf-323
搭建LAMP架構— 測試:搭建一個簡單的Discuz論壇
Linux LAMP Discuz 在前面三篇文檔中,我們分別完成了Apache、MySQL、PHP的安裝,現在讓我們玩個遊戲,在已經完成的LAMP上搭建一個簡單的Discuz論壇。軟件包同樣在我之前上傳的百度網盤中。 編譯安裝Apache 編譯安裝MySQL 編譯安裝PHP 百度網盤軟件壓縮包
搭建一個簡單的Eureka程序
stc pen AD ont web容器 pid tap app 但是 Eureka集群主要有三個部分Eureka服務器,服務提供者,服務調用者 簡單的來說就是服務提供者將服務註冊到Eureka服務器,服務調用者對其服務進行查找調用。 Eureka服務程序的搭建可參考官方文
快速搭建產品的數據分析平臺——思路篇
自己的 彩信 解決 size 期望 缺少 拖拉 自己 比較 數據分析平臺的目標 產品上線有一定流量後都會有數據分析的需求,分析運營狀態、用戶行為、應用運行情況等等,為產品改進提供數據支撐。但是數據分析可大可小:既可做到只提供概覽,也可做到對每條數據的分析;既可只