예제 #1
0
파일: collect.py 프로젝트: hacder/src
def data_collect(agent,ip,key,port):
	'''
	@数据采集入口
	@逻辑:判断ip服务器是否存活,存活:{修改osa_ipinfo中的状态,snmp采集数据入库osa_data_collect},不存活:{修改osa_ipinfo中的状态,同时写入osa_monitor_alarm表}
	'''
	try:
		ipinfo=get_ipinfo(ip)
		if not ipinfo or ipinfo==False or ipinfo == None:
			log_error('ipinfo error:'+str(ip))
			return
			
		isAlarm,reason,result,level = server_snmp_analyze(agent,ip,key,port)
		if isAlarm == "1":
			if ipinfo[2] == '0':#ipinfo[2] == '0' 表示上次服务器不可达
				#判断是否需要发送邮件
				userlist = get_mailto_users('ALL')
				#last reason
				lastreason = server_get_lastreason(ipinfo[0])
				#mail content
				log_error('ipid:'+str(ipinfo[0]))
				log_error("lastReason:"+str(lastreason))
				mailcontent,subject = server_alarm_content(ipinfo[1],ipinfo[1],lastreason,level)
				#或立即发送,转下次发送信息
				isNoticeNow,isNoticeNext,noticeNextUsers,noticeNextTime = mail_status_alarm(ipinfo,userlist,mailcontent,10,level,subject)		
				#恢复通知 状态变化,更新osa_ipinfo记录
				update_ipinfo_remind(isNoticeNow,isNoticeNext,ipinfo)
				#恢复通知 状态变化,更新osa_collect_alarm记录
				insert_collectalarm_remind(isNoticeNow,isNoticeNext,noticeNextUsers,noticeNextTime,ipinfo)
			#插入osa_collect_data记录
			insert_collectdata_remind(ipinfo[0],result)
		else:#(上次正常不正常都要判断发送邮件)
			alarminfo = {'text':reason,'level':level,'type':'server'}
			#判断是否需要发送邮件
			userlist = get_mailto_users('ALL')
			#mail content
			mailcontent ,subject= server_alarm_content(ipinfo[1],ipinfo[1],reason,level)
			#或立即发送,转下次发送信息
			isNoticeNow,isNoticeNext,noticeNextUsers,noticeNextTime = mail_status_alarm(ipinfo,userlist,mailcontent,10,level,subject)	
			#不可达通知 ,更新osa_ipinfo记录
			update_ipinfo_exception(isNoticeNow,isNoticeNext,ipinfo,level)
			#不可达通知 ,插入osa_collect_alarm记录
			insert_collectalarm_exception(isNoticeNow,isNoticeNext,noticeNextUsers,noticeNextTime,ipinfo,alarminfo)
			#插入osa_collect_data记录
			insert_collectdata_exception(ipinfo[0],result)
	except Exception as e:
		log_error("data_collect():"+str(e))		
예제 #2
0
def mailto_users_server(users,level,ipid):
	'''
	@根据报警类型和用户列表发送邮件
	'''
	rs = server_get_ipinfo(ipid)
	if rs == False:
		return False
	devname = rs[1]
	ipstr = rs[2]
	reason = ''
	content,subject = server_alarm_content(devname,ipstr,reason,level)
	userlist = get_mailto_users(users)
	for user in userlist:
		mailto = get_email_byname(user)
		sendMail(subject,content,mailto)
예제 #3
0
def mailto_users_item(users,type,level,itemid):
	'''
	@根据报警类型和用户列表发送邮件
	@项目报警类型跟内容暂时还没确定,暂时不能使用
	'''
	#content = choose_template(type)
	
	rs = monitor_get_iteminfo(itemid)
	if rs == False:
		return False
	itemname = rs[1]
	itemobject = rs[2]
	content,subject = monitor_alarm_content(type,itemname,itemobject,level)	
	userlist = get_mailto_users(users)
	for user in userlist:
		mailto = get_email_byname(user)
		sendMail(subject,content,mailto)