實時監控系統

實時監控系統

1、       系統流程圖

2、      Kafka

簡介:Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。

特徵:

               i.         通過O(1)的磁盤數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。

              ii.         高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒數百萬的消息。

             iii.         支持通過Kafka服務器和消費機集羣來分區消息。

             iv.         支持Hadoop並行數據加載。

相關術語:

             i.         Broker:Kafka集羣包含一個或多個服務器,這種服務器被稱爲broker 

           ii.         Topic:每條發佈到Kafka集羣的消息都有一個類別,這個類別被稱爲Topic。(物理上不同Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存於一個或多個broker上但用戶只需指定消息的Topic即可生產或消費數據而不必關心數據存於何處)

          iii.         Partition:Partition是物理上的概念,每個Topic包含一個或多個Partition.

          iv.         Producer:負責發佈消息到Kafka broker

           v.         Consumer:消息消費者,向Kafka broker讀取消息的客戶端。

    vi.     Consumer Group:每個Consumer屬於一個特定的Consumer Group(可爲每個Consumer指定group name,若不指定group name則屬於默認的group)。

安裝kafka:

1、修改配置文件/conf/server. Properties

broker.id=0
port=9092
host.name= 192.168.20.7
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs= /usr/saaspay_test/storm/logs/kafka 
num.partitions=1
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect= 192.168.20.208:2181
zookeeper.connection.timeout.ms=6000

2、啓動broker

nohup bin/kafka-server-start.shconfig/server.properties &

3、查看進程是否正常

ps -ef | grep kafka
 

4、檢查端口9092是否開放

netstat -tlnup | grep 9092

 

5、創建topic

bin/kafka-topics.sh --create --topicaccountlog --partitions 1 --replication-factor 1 --zookeeper192.168.20.208:2181

6、查看topic詳情

bin/kafka-topics.sh --describe --topicaccountlog  --zookeeper192.168.20.208:2181

7、啓動console消息生產者,發送消息到kafka的topic上

nohup bin/kafka-console-producer.sh--broker-list 192.168.20.7:9092 --topic accountlog &

8、啓動console消息消費者,讀取kafka上topic的消息

bin/kafka-console-consumer.sh --zookeeper192.168.20.208:2181 --topic accountlog --from-beginning

3、Apache flume

簡介:Flume是Apache提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。

數據處理:Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力 Flume提供了從console(控制檯)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日誌系統,支持TCP和UDP等2種模式),exec(命令執行)等數據源上收集數據的能力。

工作方式: Flume-ng讀入數據和寫出數據現在由不同的工作線程處理(稱爲 Runner)。 在 Flume-og 中,讀入線程同樣做寫出工作(除了故障重試)。如果寫出慢的話(不是完全失敗),它將阻塞 Flume 接收數據的能力。這種異步的設計使讀入線程可以順暢的工作而無需關注下游的任何問題。

Source:負責收集,channel:負責通信,sink:負責處理

安裝Flume:

1、編寫flume agen配置文件flume-kafka-storm.properties

# The configuration file needs to define thesources,

# the channels and the sinks.

# Sources, channels and sinks are defined peragent,

# in this case called 'agent'

a1.sources =s1

a1.channels =c1

a1.sinks = kafka_sink

#define sources

a1.sources.s1.type = exec

a1.sources.s1.command =tail -F/usr/saaspay_test/logs/saaspay_accounts/accounts_info.log

 

#definechannels

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000000

a1.channels.c1.transactionCapacity = 1000000

#definekafka sinks

a1.sinks.kafka_sink.type =org.apache.flume.sink.kafka.KafkaSink

a1.sinks.kafka_sink.topic=accountlog

a1.sinks.kafka_sink.brokerList=192.168.20.7:9092,192.168.20.30:9092

a1.sinks.kafka_sink.requireAcks=1

a1.sinks.kafka_sink.batch=20

#Bind the source and sink to the channel

a1.sources.s1.channels = c1

a1.sinks.kafka_sink.channel = c1

 

2、啓動flume agent

nohup bin/flume-ng agent -n a1 -c conf/ --conf-fileconf/flume-kafka-storm.properties -Dflume.root.logger=INFO,LOGFILE &

3啓動kakfa的console消費者查看是否有日誌產生

bin/kafka-console-consumer.sh--zookeeper 192.168.20.208:2181 --topic accountlog --from-beginning

4、Apache Storm

簡介:是一個分佈式的、容錯的實時處理系統

相關術語:

1、Nimbus

     Storm集羣主節點,負責資源分配和任務調度。

2、Supervisor

     Storm集羣工作節點,接受Nimbus分配任務,管理Worker。

3、Worker

     Supervisor下的工作進程,具體任務執行。

4、Task

     Worker下的工作線程,0.8版本之後表示邏輯線程。

5、Topology

     實時計算邏輯,計算拓撲,由Spout和Bolt組成的圖狀結構。

6、Spout

     Storm編程模型中的消息源,可進行可靠傳輸(ack/fail機制)。

7、Bolt

     Storm編程模型中的處理組件,定義execute方法進行實際的數據邏輯處理。

8、Stream

     拓撲中的消息流,傳輸的對象是Tuple。

9、Tuple

     一次消息傳遞的基本單元。

10、Stream Groupings 數據流分組策略

        1)Shuffle Grouping:      隨機分組,保證bolt接受的tuple數據相同。

        2)Fields Grouping:  按字段分組,相同tuple會分到同一個bolt中。

        3)All Grouping:     廣播發送,每個tuple會發送所有bolt中。

        4)Global Grouping: 全局分組,所有tuple發送給task_id最小的bolt。

        5)Non Grouping:    不分組,效果與Shuffle相似,發佈訂閱同一個線程。

        6)Direct Grouping:  直接分組,需要手動指定bolt。

        7)Custom Grouping:     自定義分組,自己實現分組方式。

集羣框架:

 

數據處理流程圖:

 

拓撲圖分析:

安裝Storm:

1、        配置conf/ storm.yaml

storm.zookeeper.servers:

    - "192.168.20.208"

 ui.port : 8090

 storm.local.dir:"/usr/saaspay_test/storm/logs/storm"

 nimbus.host: "192.168.20.30"

 nimbus.thrift.port: 6628

 supervisor.slots.ports:

        - 6700

        - 6701

        - 6702

              - 6703

2、啓動nimbus主節點

./storm nimbus >/dev/null 2>&1&

3、 啓動supervisor從節點

      ./storm supervisor >/dev/null2>&1 &

4、啓動strom ui管理界面

      ./storm ui >/dev/null 2>&1 &

5、 kill 拓撲

      ./storm kill saaspay

6、 運行jar

./storm jar ~/storm/jars/saaspay_bigdata-0.0.1-SNAPSHOT.jarcom.mobo360.storm.account.main.AccountTopology saaspay_kafka_account

結束storm進程:

kill -9 $(ps-ef|grep nimbus|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

kill -9 $(ps-ef|grep supervisor|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')

kill -9 $(ps-ef|grep ui|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')  

5、Drools

簡介:具有一個易於訪問企業策略、易於調整以及易於管理的開源業務規則引擎。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章