用Kibana和logstash快速搭建實時日誌查詢、收集與分析系統
Logstash是一個完全開源的工具,他可以對你的日誌進行收集、分析,並將其儲存供以後使用(如,搜尋),您可以使用它。說到搜尋,logstash帶有一個web介面,搜尋和展示所有日誌。
kibana 也是一個開源和免費的工具,他可以幫助您彙總、分析和搜尋重要資料日誌並提供友好的web介面。他可以為 Logstash 和 ElasticSearch 提供的日誌分析的 Web 介面
說到這裡,我們看看 kibana 和 logstash到底能為我們做些什麼呢?下面是kibana的介面
簡單來講他具體的工作流程就是 logstash agent 監控並過濾日誌,將過濾後的日誌內容發給redis(這裡的redis只處理佇列不做儲存),logstash index將日誌收集在一起交給
全文搜尋服務ElasticSearch 可以用ElasticSearch進行自定義搜尋 通過Kibana 來結合 自定義搜尋進行頁面展示,下圖是 Kibana官網上的流程圖
好了 讓我們一步步的把這套環境搭建起來吧,先看看都需要安裝什麼軟體包
ruby 執行Kibana 必須,
rubygems 安裝ruby擴充套件必須
bundler 功能類似於yum
JDK 執行java程式必須
redis 用來處理日誌佇列
logstash 收集、過濾日誌
ElasticSearch 全文搜尋服務(logstash集成了一個)
kibana 頁面展示
這裡有三臺伺服器
192.168.233.128 logstash index,ElasticSearch,kibana,JDK
192.168.233.129 logstash agent,JDK
192.168.233.130 redis
首先到 logstash index伺服器上面,logstash分為 index和aget ,agent負責監控、過濾日誌,index負責收集日誌並將日誌交給ElasticSearch 做搜尋
此外 logstash 的收集方式分為 standalone 和 centralized。
standalone 是所有功能都在一個伺服器上面,自發自收,centralized 就是集中收集,一臺伺服器接收所有shipper(個人理解就是logstash agent)的日誌。
其實 logstash本身不分 什麼 shipper 和 collector ,只不過就是配置檔案不同而已,我們這次按照集中的方式來測試
在 logstash index上安裝基礎的軟體環境
- [192.168.233.128 [email protected]:~]
- # cd /soft/
- [192.168.233.128 [email protected]:/soft]
- # wget http://down1.chinaunix.net/distfiles/jdk-6u13-dlj-linux-i586.bin
- 從oracle下載實在是太慢了,從CU下載會快一些,如果需要最新版本請訪問這裡
- http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- [192.168.233.128 [email protected]:/soft]
- # sh jdk-6u13-dlj-linux-i586.bin
- 輸入yes 便開始安裝了
- 安裝完成後設定一下 JAVA_HOME
- [192.168.233.128 [email protected]:/soft/Kibana-0.2.0]
- # vim /etc/profile
- export JAVA_HOME=/usr/java
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
- 安裝ruby 就比較簡單了(Kibana需要ruby 1.8.7以上版本)
- [192.168.233.128 [email protected]:/soft]
- # yum install ruby rubygems
- ..... 安裝內容省略
- 安裝完成後用 rubygems 來安裝bundler
- [192.168.233.128 [email protected]:/soft]
- # /usr/bin/gem install bundler
- .....
- ok 這樣基本的環境就已經有了,下面就是安裝kibana 和 logstash
- 其實logstash 就是一個java指令碼,不需要安裝... 下載即用
- [192.168.233.128 [email protected]:/soft]
- # wget http://logstash.objects.dreamhost.com/release/logstash-1.1.0-monolithic.jar
- 現在看看 這個指令碼應該怎麼去執行
- [192.168.233.128 [email protected]:/soft]
- # java -jar /soft/logstash-1.1.0-monolithic.jar -h
- No such command "-h"
- Available commands:
- -v
- -V
- --version
- agent
- web
- test
- 顯然沒有 -h 引數,不過列出了能用的引數,但是logstash的引數可不止這些,
- java -jar /soft/logstash-1.1.0-monolithic.jar agent --help
- 這些是在agent模式下的命令引數
- -f, --config CONFIGFILE
- Load the logstash config from a specific file, directory, or a wildcard. If given a directory or wildcard, config files will be readinorder lexigraphically.
- -e CONFIGSTRING
- Use the given string as the configuration data. Same syntax as the config file. If not input is specified, 'stdin { type => stdin }'isdefault. If nooutputis specified, 'stdout { debug => true }}'isdefault.
- -w, --filterworks COUNT
- Run COUNT filter workers (default: 1)
- --watchdog-timeout TIMEOUT
- Set watchdog timeout value.
- -l, --log FILE
- Log to a given path. Defaultisto log to stdout
- -v
- Increase verbosity. There are multiple levels of verbosity available with'-vv' currently being the highest
- --pluginpath PLUGIN_PATH
- A colon-delimted path to find other logstash plugins in
- java -jar /soft/logstash-1.1.0-monolithic.jar web --help
- 下面的是在web介面的引數
- --log FILE
- Log to a given path. Defaultis stdout.
- --address ADDRESS
- Address on which to start webserver. Defaultis 0.0.0.0.
- --port PORT
- Port on which to start webserver. Defaultis 9292.
- -B, --elasticsearch-bind-host ADDRESS
- Address on which to bind elastic search node.
- -b, --backend URL
- The backend URL to use. Defaultis elasticsearch:/// (assumes multicast discovery). You can specify elasticsearch://[host][:port]/[clustername]
- [192.168.233.128 [email protected]:/soft]
- # vim redis.conf
- input {
- redis {
- host => '192.168.233.130'
- data_type => 'list'
- port => "6379"
- key => 'logstash:redis'
- type => 'redis-input'
- }
- }
- output {
- elasticsearch {
- embedded => true
- }
- }
解釋一下 logstash的配置檔案由 input filter output 等幾個基本的部分組成,顧名思義 input 就是在那收集資料,output就是輸出到哪,filter代表一個過濾規則意思是什麼內容 會被收集。 上面這段是讓 logstash 去192.168.233.130 這個redis伺服器上去收集日誌 redis埠為6379,key是 logstash:redis 型別為 redis-input ,(注意:這幾個值必須跟logstash agent的 output 所對應),收集完成後輸出到 elasticsearch ,embedded => true 的意思是使用logstash 內嵌的 elasticsearch。如果有獨立的elasticsearch伺服器,需要將 這條改為 host => 'elasticsearch的ip' port => 埠 好了,這個簡單的配置檔案可以讓logstash開始啟動了
- [192.168.233.128 [email protected]:/soft]
- # java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf -- web --backend elasticsearch:///?local &
- [1] 5205
- ...這裡要等待約5秒鐘... 為什麼?去問開發者吧
- [192.168.233.128 [email protected]:/soft]
- # I, [2013-03-19T03:23:10.749000 #5205] INFO -- : Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T03:23:10.732000 -0700","message":"Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- file:/soft/logstash-1.1.0-monolithic.jar!/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53 warning: already initialized constant WFKV_
- Mizuno 0.5.0 (Jetty 8.0.y.z-SNAPSHOT) listening on 0.0.0.0:9292
- 解釋一下 上面的命令 agent 代理模式 -f 指定配置檔案 --web 其實是個分隔符等於又啟動了一個命令,後面的引數就是開啟一個web頁面預設埠是9292,這個命令如果拆成兩個就是這個樣子
- java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf &
- java -jar /soft/logstash-1.1.0-monolithic.jar web --backend elasticsearch:///?local & (其實如果用kibana來做web介面的話這一步完全可以省掉了)
好了,看到9292 埠啟動就代表 啟動成功了,檢查一下
- [192.168.233.128 [email protected]:/soft]
- # lsof -i:9292
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- java 5205 root 465u IPv4 130805 TCP *:armtechdaemon (LISTEN)
- 其實logstash還啟動了一個埠9200,因為啟動了內嵌的 elasticsearch,這個9200是 elasticsearch在監聽
- [192.168.233.128 [email protected]:/soft]
- # lsof -i:9200
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- java 5205 root 160u IPv4 130682 TCP *:wap-wsp (LISTEN)
現在可以通過瀏覽器訪問一下 http://192.168.233.128:9292 看看logstash是的頁面是個什麼樣子
現在還不能搜尋因為現在還沒有資料,其實這個時候 http://192.168.233.128:9200 也是可以訪問的,
很多開發自己寫程式碼來呼叫elasticsearch 來實現他們自己的需要,這裡就不多說了
192.168.233.128 這臺logstash index的操作暫時告一段落,下面開始配置logstash的agent
登入到 伺服器 192.168.233.129 安裝基本軟體包和logstash
- [192.168.233.129 [email protected]:~]
- # cd /soft/
- [192.168.233.129 [email protected]:/soft]
- # wget http://down1.chinaunix.net/distfiles/jdk-6u13-dlj-linux-i586.bin
- [192.168.233.129 [email protected]:/soft]
- # sh jdk-6u13-dlj-linux-i586.bin
- 設定 JAVA_HOME
- [192.168.233.129 [email protected]:/soft]
- # vim /etc/profile
- export JAVA_HOME=/usr/java
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
- [192.168.233.129 [email protected]:/soft]
- # yum install ruby
- 192.168.233.129 [email protected]:/soft]
- # wget http://logstash.objects.dreamhost.com/release/logstash-1.1.0-monolithic.jar
- [192.168.233.129 [email protected]:/soft]
- # vim redis.conf
- input {
- file {
- type => "producer"
- path => "/soft/apache.log"
- }
- file {
- type => "php-log"
- path => "/soft/php.log"
- }
- }
- filter {
- grep {
- match => [ "@message", "mysql|GET|error" ]
- }
- }
- output {
- redis {
- host => '192.168.233.130'
- data_type => 'list'
- key => 'logstash:redis'
- }
- }
大概說一下這個配置檔案 input 裡的file就是要監視的檔案了 這裡我監視了兩個檔案,如果這兩個檔案有追加的內容就會通過下面的output設定發給 redis伺服器
filter 裡的grep 意思就是 grep... 後面這段就是 日誌內容裡面只要有匹配 mysql或GET或error的內容就會被過濾出來,傳送到 logstash index
以上就是一個比較簡單的配置檔案了,讓我們啟動他
- [192.168.233.129 [email protected]:/soft]
- # java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf &
- I, [2013-03-19T19:45:35.762000 #2721] INFO -- : Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.752000 -0700","message":"Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- I, [2013-03-19T19:45:35.778000 #2721] INFO -- : Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.778000 -0700","message":"Using beta plugin 'file'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- I, [2013-03-19T19:45:35.804000 #2721] INFO -- : Using beta plugin 'grep'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.803000 -0700","message":"Using beta plugin 'grep'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
- I, [2013-03-19T19:45:35.854000 #2721] INFO -- : Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status {"timestamp":"2013-03-19T19:45:35.853000 -0700","message":"Using beta plugin 'redis'. For more information about plugin statuses, see http://logstash.net/docs/1.1.0/plugin-status ","level":"info"}
只要沒有 warning 和 error就算是正常啟動了
啟動之前請確定 192.168.233.130的 redis伺服器已經啟動,不然會報錯
下面登入到 192.168.233.130 上看看 redis服務的狀態
- [192.168.233.130 [email protected]:/data/redis/etc]
- # lsof -i:6379
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- redis-ser 2732 root 4u IPv4 7946 TCP *:6379 (LISTEN)
- redis-ser 2732 root 5u IPv4 7963 TCP localhost.localdomain:6379->localhost.localdomain:19214 (ESTABLISHED)
- java 2733 root 9u IPv4 7959 TCP localhost.localdomain:19214->localhost.localdomain:6379 (ESTABLISHED)
- 狀態正常,埠處於監聽狀態,我用的是最簡單的 配置,
- [192.168.233.130 [email protected]:/data/redis/etc]
- # vim redis.conf
- #this is the config file for redis
- pidfile /var/run/redis.pid
- port 6379
- timeout 0
- loglevel verbose
- logfile /data/redis/log/redis.log
- dbfilename dump.rdb
- dir /data/redis/db/
- vm-swap-file /tmp/redis.swap
- activerehashing yes
- 啟動命令如下
- [192.168.233.130 [email protected]:/data/redis/etc]
- # redis-server /data/redis/etc/redis.conf &
下載安裝就比較簡單了
- [192.168.233.130 [email protected]:/soft]
- # wget http://redis.googlecode.com/files/redis-2.4.14.tar.gz
- [192.168.233.130 [email protected]:/data/redis/etc]
- # make –j24
- [192.168.233.130 [email protected]:/data/redis/etc]
- # make install
配置檔案裡的那幾個路徑要提前建好
最後我們回到 logstash agent 上面測試一下
- [192.168.233.129 [email protected]:/soft]
- # echo GET12313 >> apache.log
- [192.168.233.129 [email protected]:/soft]
- # echo errorabcd >> apache.log
ok 到 http://192.168.233.128:9292 去搜索一下 剛才的兩個內容
嗯,就是這樣了,我現在找個php的錯誤日誌給他追加到php.log檔案裡
[192.168.233.129 [email protected]:/soft]
# cat php-error.log >> php.log
在看看 logstash的頁面 搜尋一下 error
OK,最後就是 Kibana了 ,我把Kibana裝在了 logstash index上面
下載地址為 http://kibana.org/intro.html
- [192.168.233.128 [email protected]:/soft]
- # tar xf Kibana-0.2.0.tar.gz
- [192.168.233.128 [email protected]:/soft]
- # cd Kibana-0.2.0
- [192.168.233.128 [email protected]:/soft/Kibana-0.2.0]
- # bundle install
- 直接安裝就好了,非常簡單,因為之前咱們已經安裝好了 bundle
- 編輯配置檔案,指定 elasticsearch 的位置
- [192.168.233.128 [email protected]:/soft/Kibana-0.2.0]
- # vim KibanaConfig.rb
- .....
- Elasticsearch = "localhost:9200"
- KibanaPort = 5601
- KibanaHost = '0.0.0.0'
- .....
- 主要是這幾個引數
- 啟動的話需要ruby
- [192.168.233.128 [email protected]:/soft/Kibana-0.2.0]
- # /usr/bin/ruby kibana.rb &
- [192.168.233.128 [email protected]:/soft/Kibana-0.2.0]
- # == Sinatra/1.3.5 has taken the stage on 5601 for development with backup from Thin
- >> Thin web server (v1.5.0 codename Knife)
- >> Maximum connections setto 1024
- >> Listening on 0.0.0.0:5601, CTRL+C to stop
- 如果ruby的東西都不缺的話,啟動會很順利,ok 現在看看5601埠的狀態
- [192.168.233.128 [email protected]:/soft/Kibana-0.2.0]
- # lsof -i:5601
- COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
- ruby 3116 root 5u IPv4 28947 TCP *:esmagent (LISTEN)
訪問一下 試試看 http://192.168.233.128:5601 嘗試搜尋一下php的錯誤日誌,比如mysql
呵呵,要的就是這個效果,日誌會實時的彙總到 logstash index 上供我們查詢,當然這只是開始使用logstash的第一步而已,更多的高階功能可以看看官方文件
http://logstash.net/docs/1.1.9/
如果有問題大家可以一起探討,我也是剛開始接觸這個東東,收集日誌是相當方便啊,據說還能跟nagios結合. 呵呵
相關推薦
用Kibana和logstash快速搭建實時日誌查詢、收集與分析系統
Logstash是一個完全開源的工具,他可以對你的日誌進行收集、分析,並將其儲存供以後使用(如,搜尋),您可以使用它。說到搜尋,logstash帶有一個web介面,搜尋和展示所有日誌。 kibana 也是一個開源和免費的工具,他可以幫助您彙總、分析和搜尋重要資料日誌並提供友好的web介面。他可以為 L
ELK(ElasticSearch, Logstash, Kibana)+ SuperVisor + Springboot + Logback 搭建實時日誌分析平臺
日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日誌瞭解伺服器軟硬體資訊、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解伺服器的負荷,效能安全性,從而及時採取措施糾正錯誤。 通常,日誌被分散的儲存不同的裝置上。如果你管理數十
搭建ELK日誌分析平臺(下)—— 搭建kibana和logstash伺服器
轉:http://blog.51cto.com/zero01/2082794 筆記內容:搭建ELK日誌分析平臺——搭建kibana和logstash伺服器筆記日期:2018-03-03 27.6 安裝kibana 27.7 安裝logstash 27.8 配置logstas
ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺筆記
1.ELK注意事項 1.1要求jdk1.8+ 1.2Elsearch不允許使用root啟動 1.3ELK三個包版本要一致 2.ELK下載地址 https://www.elastic.co/cn/downloads elasticsearch-6.1.1.tar.gz
ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺
摘要: ELK平臺介紹 在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段: 以下內容來自:http://baidu.blog.51cto.com/71938/1676798 日誌主要包括系統日誌、應用程式日誌和安全日誌。 ELK平臺介紹 在搜尋ELK資料的時候,
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
ElasticSearch Kibana 和Logstash 安裝x-pack記錄
perm file addition 需要 per run windows ati 操作系統 前言 最近用到了ELK的集群,想想還是用使用官方的x-pack的monitor功能對其進行監控,這裏先上圖看看: 環境如下: 操作系統: window 2012 R
Linux 用戶 和 組 快速了解
用戶名 1.4 name log pmo home ont 解析 刪除 1用戶 (Linux中“只有超級管理員”才有權限操作 用戶 和組) 1.1添加用戶 useradd 命令 例如 :useradd hly //添加了一個新賬戶 hly 用戶添加後 會存放在一個文
用inotify+rsync實現快速的實時同步
轉載:http://www.ttlsa.com/web/let-infotify-rsync-fast/ 背景 我們公司在用inotify+rsync做實時同步,來解決分散式叢集檔案一致性的問題。但當web檔案越來越多(百萬級數量html,jpg等小 檔案),同步就越來越
ubuntu16.04 快速搭建ELK日誌分析平臺
假如我們要在一臺伺服器上部署一個ssm應用,部署完,執行一段時間崩了。排查問題得時候,我們自然會想到檢視log4J日誌。可是,如果伺服器不止一個應用,而是好幾個呢,這當然可以檢視每個應用的log4J日誌。那如果不止一臺伺服器,而是好幾臺呢,難道還一個一個看?這顯
分別用eclipse和Android Studio搭建Android開發環境
暑假和小夥伴們有個Android專案,今天搭建了下開發環境。我電腦系統是win7,最開始是用Android SDK、ADT外掛和eclipse進行搭建;搭建完成後再用Android Studio搭建,安裝完Android Studio後電腦明顯變卡,記憶體8G的
結合Docker快速搭建ELK日誌收集分析平臺
作者:馬哥Linux運維-Eason ELK Stack ELK (Elasticsearch + Logstash + Kibana),是一個開源的日誌收集平臺,用於收集各種客戶端日誌檔案在同一個平臺上面做資料分析。 Introduction Elasticsearch, 基於json分析搜尋引擎
ELK搭建實時日誌分析平臺
ELK 一、介紹 Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。 Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾
SpringBoot整合elk,搭建實時日誌平臺
這篇文章主要介紹springboot整合elk. elk 簡介 Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。 Logstash是一個完全開
用Dynamips和虛擬機器搭建虛擬網路1
今天和大家分享一個虛擬網路的搭建過程,這個虛擬網路的具體拓撲如下: 路由器使用Dynamips,我們使用cisco 3660路由器,虛擬機器使用VMware和XP,物理機是Win10,Dynamips安裝在物理機Win10上,路由器模擬器的配置檔案下載地址如下: https://dow
Java用WebSocket + tail命令實現Web實時日誌
在Linux作業系統中,經常需要檢視日誌檔案的實時輸出內容,通常會使用tail -f或者tailf命令。檢視實時日誌可能會需要首先SSH連上Linux主機,步驟很麻煩不說,如果是生產環境的伺服器,可能還會控制各種許可權。基於Web的實時日誌可以解決這個問題。
使用Filebeat和Logstash集中歸檔遊戲日誌
Filebeat->Logstash->FilesFilebeat->Redis->Logstash->FilesNxlog(Rsyslog、Logstash)->Kafka->Flink(Logstash->ES-Kibana)其他方案(可根據自己需求,選擇合
nginx+flume+hdfs搭建實時日誌收集系統
1、配置nginx.conf,新增以下配置 http { #配置日誌格式 log_format lf '$remote_addr^A$msec^A$http_host^A$reques
sprinboot整合elk,搭建實時日誌平臺
這篇文章主要介紹springboot整合elk.elk 簡介Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。Logstash是一個完全開源的工具,他可以對你