最近有个朋友问我zabbix报警怎么做比较简单,灵活,方便。
其实目前zabbix的报警无怪乎下面几种方法:
1.通过action直接调用sendmail一类的脚本,传入zabbix的宏变量,优点:配置比较简单,缺点:缺乏灵活性。
2.通过action调用脚本,传入宏变量,并通过脚本来做后续的处理,这个方法比较简单也比较灵活,大部分情况下都适用。
3.抓取zabbix 数据库里面的报警信息并做报警处理。
这里简单说下第二种方法(对于第二种方法有比较多的扩展,比如通过脚本把消息发送至消息队列中,然后由后端的报警程序消费,后端的报警程序可以做一些扩展的功能,比如结合cmdb来获取业务负责人,机器的维护状态等,这个涉及到一定的开发量,我们这里说下简单的方法):
简单说下想要实现的目标
1)发送的邮件可以做一些基本的判断(比如获取内存使用,cpu使用,服务器负载等),并增加历史的图形展示
2)根据主机名,item名来判断收件人(属于谁的发送给谁,sample的脚本没有写这个功能)
首先,在action里面的operations设置如下:
注意target list/type,execute on项,以及脚本的参数(注意双引号)
创建报警脚本(写得比较挫,见谅):
#!/usr/bin/python #-*-coding:utf8-*- #zabbixremotecommand import time,datetime import zabbix_sendmail from zabbix_sendmail import SendmailError import subprocess from logging.handlers import RotatingFileHandler sys.setdefaultencoding( 'utf-8' ) LOGFILE = "/apps/svr/zabbix_server/scripts/logs/out.log" MAXLOGSIZE = 100 * 1024 * 1024 BACKUPCOUNT = 4 log = logging.getLogger( 'zabbix_exec_command' ) log.setLevel(logging.DEBUG) formatter = logging.Formatter( '%(asctime)s-%(levelname)s:%(message)s' ) fh = RotatingFileHandler(LOGFILE,maxBytes = MAXLOGSIZE,backupCount = BACKUPCOUNT) ch = logging.StreamHandler() fh.setFormatter(formatter) ch.setFormatter(formatter) log.addHandler(fh) log.addHandler(ch) def get_2hour_ago(): a = os.popen( "date+%Y%m%d%H-d'2hoursago'" ).readlines()[ 0 ] def run_command(ip,command): cmd = "zabbix_get-s" + ip + "-k'system.run[\"" + command + "\"]'" return os.popen(cmd).readlines() mailcontent = "" if __name__ = = "__main__" : if len (sys.argv)! = 8 : print "showusage:%sserveripitemiditemnamehostnameitemkeyitemvaluetriggerstatus" % (sys.argv[ 0 ]) mailcontent = """ <metahttp-equiv="Content-Type"content="text/html";charset=utf-8> <title>大数据监控邮件</title> <styletype="text/css"> .body{font-size:14px;color:#333;background-color:#fff;} .divtd{color:#E28E40;} <易宝典文章――怎样管理邮箱邮件流功能之邮件大小限制 阅读原文» 在日常使用邮件系统的过程中,往往会遇到需要限制用户发送和接收邮件大小(这里均指单封大小)的时候。比如,限制用户只能接收小于10M的邮件,如果大于10M的邮件直接拒绝掉。这样的做法可以保证用户不滥用邮件系统进行其它不相关的通讯,比如分享大文件等。 另外,限制用户发送和接收邮件大小,能够避免因为提交体积过大的邮件导致邮件服务器负载急增,造成服务器的过载而影响整个邮件系统。此外,限制接收邮件的大小,更关键的作用是避免外部邮件系统恶意发送大体积邮件对邮件系统造成DOS攻击或垃圾邮件。 那么怎样控制Exchange Server 2013的发送和接收邮件大小呢?微软提供了从不同级别实现邮件大小控制的方法: 一、管理组织内全局邮件发送和接收的大小 通过Exchange Server 2013的EAC可以基于图形界面顺利方便的完成这一操作: 1、通过IE访问https://exchange-server(FQDN)/ecp打开EAC。在Exchange管理中心窗口中,点击导航栏中的"邮件流",选择右边窗口导航条中的"接收连接器"或"发送连接器"。点击"更多"按钮,在扩展菜单中选择"组织传输设置"。 2、选择"组织传输设置"的"限制"选卡,Exchange默认设置的全局"最大接收邮件大小"和"最大发送邮件大小"均为10MB。即此处如果不修改,新建的所有收件人该值均为10MB。建议按照企业实际生产情况需要和服务器实际的性能状况对此进行修改。如:改为50MB。
二、管理单个用户发送和接收邮件的大小 在企业中的应用并非一层不变的。根据业务需求,可能有的用户需要发送和接收大体积邮件,或者有的用户不需要发送过大邮件只需要发送较小邮件等。对于有特殊收发件要求的用户,可以单独对其配置收发邮件大小,用户邮箱单独设置会覆盖全局设置对该用户的作用。这一操作依然可以通过Exchange Server 2013的EAC顺利完成。 1、通过IE访问https://exchange-server(FQDN)/ecp打开EAC。在Exchange管理中心窗口中,点击导航栏中的"收件人",选择右边窗口导航条中的"邮箱"。选择要单独指定收发邮件大小的用户,点击"编辑"按钮。
2、在"用户邮箱"对话框中,选择"邮箱功能"选卡,点击"邮件大小限制"的"查看详情"。
3、默认情况,对于用户邮箱没有进行单独设置,故用户邮箱该处值为"未限制",即遵从全局设置值。 通过EMS查看用户邮箱收发邮件大小的默认值: Get-Mailboxsanzhang | fl MaxSendSize,MaxReceiveSize
在"邮件大小限制"窗口中按照具体要求启用或禁用收发邮件的"最大邮件大小",并设定具体的限制值。
点击"确定",返回上一级页面,点击"保存",完成操作。 可以通过EMS查看并确认对于用户邮箱设置的邮件大小限制是否生效。 Get-Mailboxsanzhang | fl MaxSendSize,MaxReceiveSize
4、同样也可以通过EMS设置用户邮箱收发邮件大小。 设置sanzhang用户邮箱收发邮件大小均为10MB: Set-Mailboxsanzhang -MaxSendSize 10mb -MaxReceiveSize 10mb
此时,在EAC中,打开sanzhang的"邮件大小限制",可以看到相应的值已经随之修改。
5、如果需要设置现有所有用户邮箱的收发邮件大小限制,则只能通过EMS来完成。 设置现有所有用户邮箱收发邮件大小均为20MB Get-Mailbox-ResultSize unlimited -Filter{(RecipientTypeDetails -eq"UserMailbox")} | Set-Mailbox -MaxSendSize 20mb -MaxReceiveSize 20mb
该语句将遍历所有收件人,如果组织内邮箱数极多,可能会带来一定负载,请根据实际情况谨慎使用。 6、如果需要清除现有所有用户单独设置的收发邮件大小值,可以通过EMS来实现。 Get-Mailbox-ResultSize unlimited -Filter{(RecipientTypeDetails -eq "UserMailbox")}| Set-Mailbox -MaxSendSize Unlimited -MaxReceiveSize Unlimited
三、通过接收连接器和发送连接器来控制收发邮件大小 除了通过组织全局设置和用户邮箱单独设置之外,还可以通过接收连接器和发送连接器来限制用户收发邮件的大小。Exchange Server 2013默认存在多个接收连接器,并且允许管理员根据需要自定义接收连接器和发送连接器,不同的连接器可以单独指定收发邮件的大小,其值只能约束通过该连接器转发的邮件,而不能约束通过其它连接转发的邮件。需要注意的是,接收连接器由于只负责接收邮件,因此其限制只能约束接收邮件大小;而发送连接器只负责发送邮件,所以同样只能约束发送邮件大小。 此外,由于接收连接器和发送连接器直接控制的是服务器对邮件的传输,通过其收发的邮件必须遵从设置的邮件大小。所以实际邮件收发大小约束是: 连接器收发邮件大小限制和全局(单个用户邮箱)收发邮件大小限制的交集,即:哪个值更小就遵从哪个值。 1、设置接收连接器的最大接收邮件大小 通过IE访问https://exchange-server(FQDN)/ecp打开EAC。在Exchange管理中心窗口中,点击导航栏中的"邮件流",选择右边窗口导航条中的"接收连接器"。选择要设置邮件大小限制的连接器,可以在其右边信息栏中看到"最大接收邮件大小"值,点击"编辑"按钮。
在连接器属性窗口中,选择"常规"选卡,设置"最大接收邮件大小",其中范围可以为1MB至2047MB。
2、设置发送连接器的最大发送邮件大小 通过IE访问阅读更多内容
订阅:
博文评论 (Atom)
|
没有评论:
发表评论