<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    用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上安裝基礎的軟件環境

    1. [192.168.233.128 root@nodec:~] 
    2. # cd /soft/ 
    3. [192.168.233.128 root@nodec:/soft] 
    4. # wget http://down1.chinaunix.net/distfiles/jdk-6u13-dlj-linux-i586.bin 
    5. 從oracle下載實在是太慢了,從CU下載會快一些,如果需要最新版本請訪問這里 
    6. http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 
    7. [192.168.233.128 root@nodec:/soft] 
    8. # sh jdk-6u13-dlj-linux-i586.bin 
    9. 輸入yes 便開始安裝了 
    10. 安裝完成后設置一下 JAVA_HOME 
    11. [192.168.233.128 root@nodec:/soft/Kibana-0.2.0] 
    12. # vim /etc/profile 
    13. export JAVA_HOME=/usr/java 
    14. export PATH=$JAVA_HOME/bin:$PATH 
    15. export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH 
    16.  
    17. 安裝ruby 就比較簡單了(Kibana需要ruby 1.8.7以上版本) 
    18. [192.168.233.128 root@nodec:/soft] 
    19. # yum install ruby rubygems 
    20. ..... 安裝內容省略 
    21. 安裝完成后用 rubygems 來安裝bundler 
    22. [192.168.233.128 root@nodec:/soft] 
    23. # /usr/bin/gem install bundler 
    24. ..... 
    25.  
    26. ok 這樣基本的環境就已經有了,下面就是安裝kibana 和 logstash 
    27. 其實logstash 就是一個java腳本,不需要安裝... 下載即用 
    28. [192.168.233.128 root@nodec:/soft] 
    29. # wget http://logstash.objects.dreamhost.com/release/logstash-1.1.0-monolithic.jar 
    30. 現在看看 這個腳本應該怎么去執行 
    31. [192.168.233.128 root@nodec:/soft] 
    32. # java -jar /soft/logstash-1.1.0-monolithic.jar -h 
    33. No such command "-h" 
    34. Available commands: 
    35.   -v 
    36.   -V 
    37.   --version 
    38.   agent 
    39.   web 
    40.   test 
    41. 顯然沒有 -h 參數,不過列出了能用的參數,但是logstash的參數可不止這些, 
    42. java -jar /soft/logstash-1.1.0-monolithic.jar agent --help 
    43. 這些是在agent模式下的命令參數 
    44. -f, --config CONFIGFILE 
    45.     Load the logstash config from a specific file, directory, or a wildcard. If given a directory or wildcard, config files will be read in order lexigraphically. 
    46. -e CONFIGSTRING 
    47.     Use the given string as the configuration data. Same syntax as the config file. If not input is specified, 'stdin { type => stdin }' is default. If no output is specified, 'stdout { debug => true }}' is default
    48. -w, --filterworks COUNT 
    49.     Run COUNT filter workers (default: 1) 
    50. --watchdog-timeout TIMEOUT 
    51.     Set watchdog timeout value. 
    52. -l, --log FILE 
    53.     Log to a given path. Default is to log to stdout 
    54. -v 
    55.     Increase verbosity. There are multiple levels of verbosity available with '-vv' currently being the highest 
    56. --pluginpath PLUGIN_PATH 
    57.     A colon-delimted path to find other logstash plugins in 
    58. java -jar /soft/logstash-1.1.0-monolithic.jar web --help 
    59. 下面的是在web界面的參數 
    60. --log FILE 
    61.     Log to a given path. Default is stdout. 
    62. --address ADDRESS 
    63.     Address on which to start webserver. Default is 0.0.0.0. 
    64. --port PORT 
    65.     Port on which to start webserver. Default is 9292. 
    66. -B, --elasticsearch-bind-host ADDRESS 
    67.     Address on which to bind elastic search node. 
    68. -b, --backend URL 
    69.     The backend URL to use. Default is elasticsearch:/// (assumes multicast discovery). You can specify elasticsearch://[host][:port]/[clustername] 
    如果上面的這些命令都能執行正常的話就表示 logstash可以使用了,但要讓他啟動還需要一個配置文件
    1. [192.168.233.128 root@nodec:/soft] 
    2.  
    3. # vim redis.conf 
    4.  
    5. input {
    6. redis { 
    7.   host => '192.168.233.130' 
    8.   data_type => 'list' 
    9.   port => "6379" 
    10.   key => 'logstash:redis' 
    11.   type => 'redis-input' 
    12.        } 
    13.        }
    14.  
    15. output { 
    16.     elasticsearch { 
    17.     embedded => true 
    18.                   } 
    19.        } 
    解釋一下 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開始啟動了  
    1. [192.168.233.128 root@nodec:/soft] 
    2. # java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf -- web --backend elasticsearch:///?local & 
    3. [1] 5205 
    4. ...這里要等待約5秒鐘... 為什么?去問開發者吧 
    5. [192.168.233.128 root@nodec:/soft] 
    6. # 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"} 
    7. 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_ 
    8. Mizuno 0.5.0 (Jetty 8.0.y.z-SNAPSHOT) listening on 0.0.0.0:9292 
    9. 解釋一下 上面的命令 agent 代理模式 -f 指定配置文件 --web 其實是個分隔符等于又啟動了一個命令,后面的參數就是開啟一個web頁面默認端口是9292,這個命令如果拆成兩個就是這個樣子 
    10. java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf & 
    11. java -jar /soft/logstash-1.1.0-monolithic.jar web --backend elasticsearch:///?local & (其實如果用kibana來做web界面的話這一步完全可以省掉了)
    好了,看到9292 端口啟動就代表 啟動成功了,檢查一下  
    1. [192.168.233.128 root@nodec:/soft] 
    2. # lsof -i:9292 
    3. COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME 
    4. java    5205 root  465u  IPv4 130805       TCP *:armtechdaemon (LISTEN) 
    5. 其實logstash還啟動了一個端口9200,因為啟動了內嵌的 elasticsearch,這個9200是 elasticsearch在監聽 
    6. [192.168.233.128 root@nodec:/soft] 
    7. # lsof -i:9200 
    8. COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME 
    9. 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

    1. [192.168.233.129 root@noded:~] 
    2. # cd /soft/ 
    3. [192.168.233.129 root@noded:/soft] 
    4. # wget http://down1.chinaunix.net/distfiles/jdk-6u13-dlj-linux-i586.bin 
    5. [192.168.233.129 root@noded:/soft] 
    6. # sh jdk-6u13-dlj-linux-i586.bin 
    7. 設置 JAVA_HOME 
    8. [192.168.233.129 root@noded:/soft] 
    9. # vim /etc/profile 
    10. export JAVA_HOME=/usr/java 
    11. export PATH=$JAVA_HOME/bin:$PATH 
    12. export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH 
    13. [192.168.233.129 root@noded:/soft] 
    14. # yum install ruby 
    15. 192.168.233.129 root@noded:/soft] 
    16. # wget http://logstash.objects.dreamhost.com/release/logstash-1.1.0-monolithic.jar 
    17. [192.168.233.129 root@noded:/soft] 
    18. # vim redis.conf 
    19. input { 
    20.     file { 
    21.     type => "producer" 
    22.     path => "/soft/apache.log" 
    23.     } 
    24.     file { 
    25.     type => "php-log" 
    26.     path => "/soft/php.log" 
    27.     } 
    28. filter { 
    29.        grep { 
    30.        match => [ "@message""mysql|GET|error" ] 
    31.             } 
    32.        } 
    33.  
    34. output { 
    35.       redis { 
    36.       host => '192.168.233.130' 
    37.       data_type => 'list' 
    38.       key => 'logstash:redis' 
    39.        } 
    40.        } 


       大概說一下這個配置文件 input 里的file就是要監視的文件了 這里我監視了兩個文件,如果這兩個文件有追加的內容就會通過下面的output設置發給 redis服務器
    filter 里的grep 意思就是 grep...  后面這段就是 日志內容里面只要有匹配 mysql或GET或error的內容就會被過濾出來,發送到 logstash index
    以上就是一個比較簡單的配置文件了,讓我們啟動他

    1. [192.168.233.129 root@noded:/soft] 
    2. # java -jar /soft/logstash-1.1.0-monolithic.jar agent -f /soft/redis.conf & 
    3. 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"} 
    4. 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"} 
    5. 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"} 
    6. 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服務的狀態

    1. [192.168.233.130 root@nodea:/data/redis/etc] 
    2. # lsof -i:6379 
    3. COMMAND    PID USER   FD   TYPE DEVICE SIZE NODE NAME 
    4. redis-ser 2732 root    4u  IPv4   7946       TCP *:6379 (LISTEN) 
    5. redis-ser 2732 root    5u  IPv4   7963       TCP localhost.localdomain:6379->localhost.localdomain:19214 (ESTABLISHED) 
    6. java      2733 root    9u  IPv4   7959       TCP localhost.localdomain:19214->localhost.localdomain:6379 (ESTABLISHED) 
    7. 狀態正常,端口處于監聽狀態,我用的是最簡單的 配置, 
    8. [192.168.233.130 root@nodea:/data/redis/etc] 
    9. # vim redis.conf 
    10. #this is the config file for redis 
    11. pidfile /var/run/redis.pid 
    12. port 6379 
    13. timeout 0 
    14. loglevel verbose 
    15. logfile /data/redis/log/redis.log 
    16. dbfilename dump.rdb 
    17. dir /data/redis/db/ 
    18. vm-swap-file /tmp/redis.swap 
    19. activerehashing yes 
    20. 啟動命令如下 
    21. [192.168.233.130 root@nodea:/data/redis/etc] 
    22. # redis-server /data/redis/etc/redis.conf & 


    下載安裝就比較簡單了

    1. [192.168.233.130 root@nodea:/soft] 
    2. # wget http://redis.googlecode.com/files/redis-2.4.14.tar.gz 
    3. [192.168.233.130 root@nodea:/data/redis/etc] 
    4. # make –j24 
    5. [192.168.233.130 root@nodea:/data/redis/etc] 
    6. # make install 


    配置文件里的那幾個路徑要提前建好

    最后我們回到 logstash agent 上面測試一下

    1. [192.168.233.129 root@noded:/soft] 
    2. # echo GET12313 >> apache.log 
    3. [192.168.233.129 root@noded:/soft] 
    4. # echo errorabcd >> apache.log 


    ok 到 http://192.168.233.128:9292 去搜索一下 剛才的兩個內容


    嗯,就是這樣了,我現在找個php的錯誤日志給他追加到php.log文件里 
    [192.168.233.129 root@noded:/soft]
    # cat php-error.log >> php.log
    在看看 logstash的頁面 搜索一下 error


    OK,最后就是 Kibana了 ,我把Kibana裝在了 logstash index上面
    下載地址為 http://kibana.org/intro.html

    1. [192.168.233.128 root@nodec:/soft] 
    2. # tar xf Kibana-0.2.0.tar.gz 
    3. [192.168.233.128 root@nodec:/soft] 
    4. # cd Kibana-0.2.0 
    5. [192.168.233.128 root@nodec:/soft/Kibana-0.2.0] 
    6. # bundle install 
    7. 直接安裝就好了,非常簡單,因為之前咱們已經安裝好了 bundle 
    8. 編輯配置文件,指定 elasticsearch 的位置 
    9. [192.168.233.128 root@nodec:/soft/Kibana-0.2.0] 
    10. # vim KibanaConfig.rb 
    11. ..... 
    12.   Elasticsearch = "localhost:9200" 
    13.   KibanaPort = 5601 
    14.   KibanaHost = '0.0.0.0' 
    15. ..... 
    16. 主要是這幾個參數 
    17. 啟動的話需要ruby 
    18. [192.168.233.128 root@nodec:/soft/Kibana-0.2.0] 
    19. # /usr/bin/ruby kibana.rb & 
    20. [192.168.233.128 root@nodec:/soft/Kibana-0.2.0] 
    21. # == Sinatra/1.3.5 has taken the stage on 5601 for development with backup from Thin 
    22. >> Thin web server (v1.5.0 codename Knife) 
    23. >> Maximum connections set to 1024 
    24. >> Listening on 0.0.0.0:5601, CTRL+C to stop 
    25. 如果ruby的東西都不缺的話,啟動會很順利,ok 現在看看5601端口的狀態 
    26. [192.168.233.128 root@nodec:/soft/Kibana-0.2.0] 
    27. # lsof -i:5601 
    28. COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME 
    29. 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結合. 呵呵

    posted on 2014-09-30 13:14 paulwong 閱讀(8572) 評論(0)  編輯  收藏 所屬分類: LOG ANALYST BIG DATA SYSTEM

    主站蜘蛛池模板: 怡红院免费的全部视频| 性一交一乱一视频免费看| 无码专区一va亚洲v专区在线| 亚洲高清中文字幕综合网| 九一在线完整视频免费观看| 国语成本人片免费av无码| 久久亚洲国产精品五月天| 日韩一级片免费观看| 妞干网免费视频在线观看| 久久亚洲私人国产精品vA| 巨胸狂喷奶水视频www网站免费| 日韩免费在线观看| 亚洲乱码一二三四五六区| 久久久高清日本道免费观看| 亚洲成人国产精品| 亚洲欧美综合精品成人导航| 黄色网址免费观看| 久久精品亚洲日本佐佐木明希| 日本免费精品一区二区三区| 午夜影视在线免费观看| 亚洲免费电影网站| 59pao成国产成视频永久免费| 国产成A人亚洲精V品无码性色| selaoban在线视频免费精品| 四虎影院永久免费观看| 亚洲码和欧洲码一码二码三码| 噼里啪啦免费观看高清动漫4| 午夜亚洲www湿好大| 永久免费av无码入口国语片| 亚洲一区无码中文字幕| 色吊丝性永久免费看码| 国产乱子伦精品免费无码专区| 亚洲欧美成aⅴ人在线观看| 中字幕视频在线永久在线观看免费| 99久久亚洲综合精品成人网| 免费黄网站在线看| 亚洲av综合avav中文| 青青操免费在线观看| 国产亚洲综合网曝门系列| 久久免费国产精品| 国产aⅴ无码专区亚洲av麻豆|