GlusterFS + lagstash + elasticsearch + kibana 3 + redis日誌收集存儲系統部署 01

因公司數據安全和分析的須要,故調研了一下 
GlusterFS +  lagstash + elasticsearch + kibana 3  + redis 整合在一塊兒的日誌管理應用:

安裝,配置過程,使用狀況等續

一,glusterfs分佈式文件系統部署:
說明:
公司想作網站業務日誌及系統日誌統一收集和管理,通過對mfs, fastdfs 等分佈式文件系統的調研,最後選擇了 glusterfs,由於Gluster具備高擴展性、高性能、高可用性、可橫向擴展的彈性特色,無元數據服務器設計使glusterfs沒有單點故障隱患,官網:www.gluster.org
1.      系統環境準備:
Centos 6.4
         服務端:
         192.168.10.101
         192.168.10.102
         192.168.10.188
         192.168.10.189
         客戶端:
         192.168.10.103
         EPEL源和GlusterFS源
         增長EPEL源和GLusterFS源,EPEL源中包含GLusterFS,版本比較舊,相對穩定,本次測試採用最新的3.5.0版本。
 
         rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
         wget -P /etc/yum.repos.dhttp://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo
 
2.      部署過程
         服務端安裝:
 
         yum -y install glusterfs glusterfs-fuseglusterfs-server
         chkconfig glusterd on
         service glusterd start
         服務端配置:
         將4個存儲節點組成一集羣,本文在第一個節點執行,只須要在任意節點執行就ok。
 
         [root@db1 ~]# gluster peer probe192.168.10.102
         probe successful
         [root@db1 ~]# gluster peer probe192.168.10.188
         probe successful
         [root@db1 ~]# gluster peer probe 192.168.10.189
         probe successful
         查看集羣的節點信息:
 
         [root@db1 ~]# gluster peer status
         number of peers: 3
         hostname: 192.168.10.102
         uuid:b9437089-b2a1-4848-af2a-395f702adce8
         state: peer in cluster (connected)
         hostname: 192.168.10.188
         uuid: ce51e66f-7509-4995-9531-4c1a7dbc2893
         state: peer in cluster (connected)
         hostname: 192.168.10.189
         uuid:66d7fd67-e667-4f9b-a456-4f37bcecab29
         state: peer in cluster (connected)
         以/data/gluster爲共享目錄,建立名爲test-volume的卷,副本數爲2:
 
          sh cmd.sh "mkdir /data/gluster"
         [root@db1 ~]#  gluster volume create test-volume replica 2192.168.10.101:/data/gluster 192.168.10.102:/data/gluster192.168.10.188:/data/gluster 192.168.10.189:/data/gluster
         creation of volume test-volume has beensuccessful. please start the volume to access data.
         啓動卷:
 
         [root@db1 ~]# gluster volume starttest-volume
         starting volume test-volume has beensuccessful
         查看卷狀態:
 
         [root@db1 ~]# gluster volume info
         volume name: test-volume
         type: distributed-replicate
         status: started
         number of bricks: 2 x 2 = 4
         transport-type: tcp
         bricks:
         brick1: 192.168.10.101:/data/gluster
         brick2: 192.168.10.102:/data/gluster
         brick3: 192.168.10.188:/data/gluster
         brick4: 192.168.10.189:/data/gluster
3.      客戶端安裝配置:
         安裝:
 
         yum -y installglusterfs glusterfs-fuse
         掛載:
 
         mount -t glusterfs 192.168.10.102:/test-volume/mnt/ (掛載任意一個節點便可)推薦用這種方式。
 
         mount -t nfs -o mountproto=tcp,vers=3192.168.10.102:/test-volume /log/mnt/ (使用nfs掛載,注意遠端的rpcbind服務必須開啓)
         echo "192.168.10.102:/test-volume/mnt/ glusterfs defaults,_netdev 0 0" >> /etc/fstab (開機自動掛載)
4.      測試
         檢查文件正確性
 
         dd if=/dev/zero of=/mnt/1.img bs=1Mcount=1000 # 在掛載客戶端生成測試文件
         cp /data/navy /mnt/  # 文件拷貝到存儲上
 
         宕機測試。
         使用glusterfs-fuse掛載,即便目標服務器故障,也徹底不影響使用。用NFS則要注意掛載選項,不然服務端故障容易致使文件系統halt住而影響服務!
 
         # 將其中一個節點中止存儲服務service glusterd stop
         service glusterfsd stop# 在掛載客戶端刪除測試文件
         rm -fv /mnt/navy# 此時在服務端查看,服務被中止的節點上navy並未被刪除。此時啓動服務:serviceglusterd start# 數秒後,navy就被自動刪除了。新增文件效果相同!
5.      運維經常使用命令:
  刪除卷
         gluster volume stop test-volume
         gluster volume delete test-volume
         將機器移出集羣
         gluster peer detach 192.168.10.102
         只容許172.28.0.0的網絡訪問glusterfs
         gluster volume set test-volumeauth.allow 192.168.10.*
         加入新的機器並添加到卷裏(因爲副本數設置爲2,至少要添加2(468..)臺機器)
         gluster peer probe 192.168.10.105
         gluster peer probe 192.168.10.106
         gluster volume add-brick test-volume192.168.10.105:/data/gluster 192.168.10.106:/data/gluster
         收縮卷
         # 收縮卷前gluster須要先移動數據到其餘位置
         gluster volume remove-brick test-volume192.168.10.101:/data/gluster/test-volume192.168.10.102:/data/gluster/test-volume start
         # 查看遷移狀態
         gluster volume remove-brick test-volume192.168.10.101:/data/gluster/test-volume192.168.10.102:/data/gluster/test-volume status
         # 遷移完成後提交
         gluster volume remove-brick test-volume192.168.10.101:/data/gluster/test-volume192.168.10.102:/data/gluster/test-volume commit
         遷移卷
         # 將192.168.10.101的數據遷移到,先將192.168.10.107加入集羣
         gluster peer probe 192.168.10.107
         gluster volume replace-bricktest-volume 192.168.10.101:/data/gluster/test-volume192.168.10.107:/data/gluster/test-volume start
         # 查看遷移狀態gluster volume replace-brick test-volume192.168.10.101:/data/gluster/test-volume192.168.10.107:/data/gluster/test-volume status
         # 數據遷移完畢後提交gluster volume replace-brick test-volume192.168.10.101:/data/gluster/test-volume192.168.10.107:/data/gluster/test-volume commit
         # 若是機器192.168.10.101出現故障已經不能運行,執行強制提交而後要求gluster立刻執行一次同步
         gluster volume replace-bricktest-volume 192.168.10.101:/data/gluster/test-volume192.168.10.102:/data/gluster/test-volume commit -force
         gluster volume heal test-volumes full
         24007

 

 
二.日誌收集系統部署
說明簡解:
系統各部分應用介紹
Logstash:作系統log收集,轉載的工具。同時集成各種日誌插件,對日誌查詢和分析的效率有很大的幫助.通常使用shipper做爲log收集、indexer做爲log轉載.
Logstash shipper收集log 並將log轉發給redis 存儲
Logstash indexer從redis中讀取數據並轉發給elasticsearch
redis:是一個db,logstash shipper將log轉發到redis數據庫中存儲。Logstash indexer從redis中讀取數據並轉發給elasticsearch。
Elasticsearch:開源的搜索引擎框架,前期部署簡單,使用也簡單,但後期須要作必要的優化具體請參照博客http://chenlinux.com/categories.html#logstash-ref  中logstash部分.可進行多數據集羣,提升效率。從redis中讀取數據,並轉發到kibana中
Kibana: 開源web展示。
 
虛擬服務器準備:
192.168.10.143    logstash shipper
192.168.10.144       logstash  indexer redis
192.168.10.145    elasticsearch  kibana3
1.三臺主機都要安裝jdk 1.7
推薦oracle jdk 1.7+版本
java -version
設置java的環境變量,好比
 
 vim~/.bashrc
 
>> 
JAVA_HOME=/usr/java/jdk1.7.0_55
PATH=$PATH:/$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib
JRE_HOME=$JAVA_HOME/jre
export JAVA_HOME PATH CLASSPATH JRE_HOME
>> 
source ~/.bashrc
2.安裝redis(192.168.10.144)
wgethttp://download.redis.io/releases/redis-2.6.16.tar.gz
tar -zxf redis-2.6.16.tar.gz
cd redis-2.6.16
make &&  make install
./src/redis-server ../redis.conf
 
 
啓動redis客戶端來驗證安裝
./src/redis-cli
> keys *    #列出全部的key
 
 
3.安裝Elasticsearch(192.168.10.145)
wgethttp://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.13.zip
 unzipelasticsearch-0.90.13.zip
elasticsearch解壓便可使用很是方便,接下來咱們看一下效果,首先啓動ES服務,切換到elasticsearch目錄,運行bin下的elasticsearch
cd  elasticsearch-0.90.13
bin/elasticsearch -f
訪問默認的9200端口
 
curl -X GET http://localhost:9200
          
4.安裝logstash (192.168.10.143 ,192.168.10.144)
wgethttp://download.elasticsearch.org/logstash/logstash/logstash-1.2.1-flatjar.jar
logstash下載便可使用,命令行參數能夠參考logstash flags,主要有
agent  #運行Agent模式
-f CONFIGFILE #指定配置文件
web    #自動Web服務
-p PORT #指定端口,默認9292
 
 
5. 安裝kibana(192.168.10.145)
logstash的最新版已經內置kibana,你也能夠單獨部署kibana。kibana3是純粹JavaScript+html的客戶端,因此能夠部署到任意http服務器上。
wgethttp://download.elasticsearch.org/kibana/kibana/kibana-latest.zip
 unzip kibana-latest.zip
 cp-r  kibana-latest /var/www/html
能夠修改config.js來配置elasticsearch的地址和索引。
 修改如下行。
 elasticsearch:"http://192.168.10.145:9200",
 
 
 
 
 
 
 
6.      整合配置:
192.168.10.143 logstash shipper  配置收集日誌
Vim /etc/logstash_shipper.conf
    input{
    
           file  {
          type => "linux-syslog"
           path => [ "/var/log/lastlog", "/var/log/syslog","/var/log/lastlog" ]
         }
 
}
    
output {
        redis {
        host => "192.168.10.144"
                    port => 「6379」
        data_type =>"list"
        key => "syslog"
       }
}
      啓動logstash shipper
       Nohup java –jar logstash-1.2.1-flatjar.jar agent –f /etc/ logstash_shipper.conf &
              過十秒後,輸出以下信息:
Using milestone 2input plugin 'file'. This plugin should be stable, but if you see strangebehavior, please let us know! For more information on plugin milestones, seehttp://logstash.net/docs/1.2.2/plugin-milestones {:level=>:warn}
Using milestone 2 output plugin 'redis'.This plugin should be stable, but if you see strange behavior, please let usknow! For more information on plugin milestones, see http://logstash.net/docs/1.2.2/plugin-milestones{:level=>:warn}
 

 
192.168.10.144  logstash indexer 配置以下:
Vim /etc/logstash_indexer.conf
 input{
   redis
   {
   host => "192.168.10.144"
   data_type =>"list"
   port => "6379"
   key => "syslog"
   type => "redis-input"
   }
 
}
 
output
   {
   elasticsearch {
   host => "192.168.10.145"
   port => "9300"
   }
}
 
啓動logstash  indexer 
Nohup java –jar logstash-1.2.1-flatjar.jar agent –f /etc/ logstash_indexer.conf &
 
輸出同上。
 
7.      登陸 http://192.168.10.145/kibana  訪問以下
                             

三,整合分佈式文件存儲和日誌收集系統 邏輯圖以下:html

把glusterfs 掛載到web服務器端,具體須要編寫日誌結構化程序配合日誌寫到glusterfs存儲上。

相關文章
相關標籤/搜索