实时监控系统

实时监控系统

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

简介:具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎。

猜你喜欢

转载自blog.csdn.net/u010313441/article/details/71215509