监控主动轮询进程是否会崩溃跪掉,采取措施是通过心跳包形式进行抓取,定时生成文件,jnotify监听发到kafka上,之后通过消费者进行解析,若发现不符规则情况,发邮件短信报警。
- package heartbeat.monitor;
-
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Properties;
- import java.util.concurrent.ExecutionException;
-
- import org.apache.commons.io.IOUtils;
-
- import heartbeat.monitor.sendmessage.SendMailUtil;
- import heartbeat.monitor.util.HeartBeatMonitorConstant;
-
- public class HeartBeatMonitorAccess {
- private List<HeartBeatMonitor> consumers;
- private static String heartbeatConsumerProperties;
-
- public HeartBeatMonitorAccess() throws IOException {
-
- Properties properties = new Properties();
- if (heartbeatConsumerProperties == null) {
- properties.load(ClassLoader.getSystemResourceAsStream("heartBeatMonitor.properties"));
- } else {
- String propurl = heartbeatConsumerProperties;
- InputStream in = new FileInputStream(propurl);
- properties.load(in);
- IOUtils.closeQuietly(in);
- }
- int num = 1;
- String topic = properties.getProperty(HeartBeatMonitorConstant.MONITOR_TOPIC);
- consumers = new ArrayList<HeartBeatMonitor>(num);
- for (int i = 0; i < num; i++) {
- consumers.add(new HeartBeatMonitor(properties, topic));
- new SendMailUtil(properties, topic);
- }
- }
-
- public void exeute() throws InterruptedException, ExecutionException {
- for (HeartBeatMonitor consumer : consumers) {
- new Thread(consumer).start();
- }
- }
-
- public static void main(String[] args) throws Exception {
- if (args.length > 0)
- heartbeatConsumerProperties = args[0];
-
- HeartBeatMonitorAccess consumerGroup = new HeartBeatMonitorAccess();
- consumerGroup.exeute();
- }
-
- }
消费者抓取相应的规则进行解析判断
后台轮询消费kafka中消息
通过配置文件形式,进行各种事件的监控
- #Created by Switching
- auto.commit.interval.ms=1000
- auto.offset.reset=earliest
- bootstrap.servers=192.168.102.10\:9092
- enable.auto.commit=true
- group.id=monitor1
- key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
- monitorTopic=monitor
- value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
-
- #heartBeat monitor exception notify times(3)
- monitorTries=3
- #heartBeat monitor offset time(20000)(ms)
- monitorOffsetTime=20000
- #heartBeat monitor log lvls(EXCEPTION):ALL|EXCEPTION|NOEXCEPTION|NONE
- monitorLogLvls=EXCEPTION
-
- #heartBeat Monitor mailInfo
- sendEmailAccount=xxxx@jdongtech.com
- sendEmailPassword=xxxxx
- sendEmailSMTPHost=smtp.xxxx.com
- receEMailAccount=xxx@jdongtech.com
监控心跳实现
原文:http://www.cnblogs.com/huluyisheng/p/6866395.html