看监控及 Zabbix 配置 SNMP Trap 告警
上篇~仰望星空,聊聊监控话说运维有三宝,监控、日志,自动化。不知是谁最开始提的,仔细琢磨,颇有道理,可见监控的重要性。 监控平台,你是我们的眼。
之前读李智慧写的《大型网站技术架构: 核心原理与案例分析》 ,非常喜欢。今天就参考其中的逻辑,从高性能、高可用、伸缩性、可扩展性、安全和成本这几方面聊聊监控平台的建设。
高性能一般 LNMP 经典架构的系统,随着业务量的增长,进行横向或者纵向的拆分。监控平台的特殊系在于:PV 并发通常并不太高;主要的性能瓶颈是在数据存储,数据库写入的压力会比较大;历史数据使用频率非常低。
在高性能设计的时候,需要根据具体的监控对象量级进行规划。1)考虑部署Mysql的集群方案。2)数据库考虑使用高性能的存储。3)考虑 Mysql 分区,将冷热数据进行分离。
高可用监控平台通常由核心引擎Engine、数据存储db、管理门户Portal、告警发送器Sender、客户端 Agent 、代理Proxy 等部件组成。在高可用设计的时候,需要考虑到各个组件的高可用。特别是核心引擎、数据库和管理门户。核心引擎和管理门户可以考虑 rhcs、keepalived、Pacemaker 等经典高可用方案。数据库需要结合高性能一起设计,部署高可用和高性能的集群。
伸缩性伸缩性包括不同功能的伸缩和单一功能的伸缩。不同功能的伸缩,将监控平台的核心引擎、数据存储、管理门户等组件根据规模,逐渐拆分部署。超大规模的监控平台,建设之初就需要考虑拆分。
单一功能的伸缩。主要是 Proxy 代理节点的部署。代理节点主要考虑 1)是不同的防火墙区域部署不同的代理;2)是单个区域内, Proxy 只承载一定数量的监控对象,监控对象超过 Proxy 的容量边界,考虑部署新的代理节点。
可扩展性在对现有系统影响最新的情况下,系统功能的可持续扩展或者提升。监控平台是管理的核心系统之一。可扩展性主要是跟其他管理系统的结合。包括三个方面。1)是资产管理和配置管理系统CMDB,比如说资产的自动发现和入库。2)是发布平台。监控平台需要跟发布平台联调,减少不必要的告警。3)是运维服务管理平台。主要是服务的可用性、服务质量的计量的保障,等等。
安全安全配置是贯穿监控平台的所有组件的。其重点集中在用户管理和 Agent 权限的配置。用户的管理要考虑权限的最小化,考虑集成 LDAP,用户的管理区域最小化,只读权限等。
Agent 往往需要采集系统的状态,需要管理员权限。考虑严格遵守linux的约定,创建单独的帐号运行agent,配置sudo。 另外就是传输的过程中,考虑使用加密的方式。
成本首先做到心中有成本。所有的方案设计都需要考虑成本。用最低的成本实现最大的效率,那是真本事。考虑使用业内主流的开源监控方面。一个是降低软硬件的研发成本,监控平台不是直接创造利润的系统,公司通常投入的人力物力是有限的。二是降低人力成本。包括员工学习的成本和公司内部推广的成本。
围绕监控平台的架构考虑先聊到这里。
下篇~低头看路,记录配置
Zabbix 是业内流行的一款开源的,企业级的,分布式的,All in One监控解决方案。Zabbix 可以支持广泛的操作系统平台,监控各种类型的设备和应用,也有培训和认证。国内也出版了很多这方面的书: 《Zabbix企业级分布式监控系统》 《Zabbix监控系统》 等等。整个生态比较成熟。
配置Zabbix 的时候,读了凉白开写的《Zabbix教程从入门到精通》 ,南非蜘蛛大拿写的PPT 《Zabbix 介绍》 ,感觉都非常棒。
前段时间有配置Zabbix ,对VC进行告警。这里记录和分享一下。看了一些文章,但是最重要的还是官方的manual。documentation/3.0/manual/config/items/itemtypes/snmptrap
这里只记录简单的配置步骤和方法,不详细介绍 SNMP 协议、Zabbix 的告警方式、正则表达式。
概要:a) snmptrapd 接收到一个trap 消息b) snmptrapd 将此trap 消息发送给SNMPTT 或者调用 Perl 脚本处理此trapc) SNMPTT 或者Perl 脚本对此trap 进行解析,格式化后写入到文件中d) Zabbix SNMP trapper 读取此文件并解析trap 内容e) Zabbix 会在每条 trap 记录中匹配所有的 SNMP trapper 内容,不仅仅是选中的IP 或者域名f) 匹配到的所有条目,将与zabbix 的正则表达式 snmptrap 比较。所以命中的条目,trap 将设置为此条目的值。否则没有命中,则写入 snmptrap.fallback 中。g) 如果trap 没有设置为任何条目的值,则Zabbix 将记录在默认的日志中。
详细步骤:
0 在vCenter 配置 SNMP trap 。启用收件人,设置SNMPD IP地址、端口号和团体字符串。
配置TRAP告警, 选择VC 地址,选择警报,选择定义,选择告警的条目。编辑设置,选择操作,选择添加,选择发送陷阱通知,确定。 注意VC的防火墙设置和语言的字符集,Windows版需要配置英文语言环境,中文暂时不支持。
1 配置snmpd 服务。安装snmpd的软件包。yum install -y epel-*yum install -y net-snmp-perl perl-Config-IniFilessnmptt net-snmp-utils
在snmpd 配置文件/etc/snmp/snmpd.conf最后添加以下内容。authCommunity execute publicperl do "/usr/bin/zabbix_trap_receiver.pl";
拷贝脚本和配置权限cp misc/snmptrap/zabbix_trap_receiver.pl /usr/bin/chmod +x /usr/bin/zabbix_trap_receiver.pl
启动snmpd 服务chkconfig snmpd onservice snmpd start
2 配置 zabbix_trap_receiver.pl 脚本。
包括临时 traps 文件路径和时间格式$SNMPTrapperFile = '/tmp/zabbix_traps.tmp';$DateTimeFormat = '%H:%M:%S %Y/%m/%d';
3 配置snmptt 服务。
通过snmpttconvertmib 程序将MIB 库转换为配置文件。snmpttconvertmib--in=/usr/share/snmp/mibs/VMWARE-VC-EVENT-MIB.mib--out=/etc/snmp/snmptt.conf.vcsnmpttconvertmib--in=/usr/share/snmp/mibs/VMWARE-VCOPS-EVENT-MIB.mib --out=/etc/snmp/snmptt.conf.vcops
编辑配置文件/etc/snmp/snmptt.ini 配置 trap files,注意snmptt 配置文件的顺序。snmptt_conf_files = <<END/etc/snmp/snmptt.conf.vc
/etc/snmp/snmptt.conf.vcopsEND
启动snmptt 服务chkconfig snmptt onservice snmptt start
4 配置zabbix-server 配置zabbix_server.conf ,指定snmptt 处理后的文件路径SNMPTrapperFile=/tmp/zabbix_traps.tmpStartSNMPTrapper=1
重启zabbix-serverservice zabbix_server restart
5 配置zabbix web 端编辑主机,添加SNMP interface, 注意开通防火墙策略。
6 主机添加 SNMP 条目
类型选择 SNMP Trap ,interface 选择 SNMP。 Key 选择 snmptrap[<regex>]在方括号中配置正则表达式。
信息类型选择 Text ,确认。
7设置 trigger。添加一条 SNMP Trap 的trigger ,根据需求配置 自定义的表达式,并设置告警级别。
8 根据 trigger 配置一个Action 。
Action 主要包括触发条件和报警的操作。出发条件可以设置不同的规则。
报警包括报警的媒介,短信或者邮件,或者是all media。告警的对象可以是不同的组和用户的组合。
监控平台是一个精细的工程,用心打磨吧。原创:王国裕
页:
[1]