zabbix介绍

kpl64

贡献于2014-09-08

字数:0 关键词: 系统监控

企业级的开源监控解决方案 By 南非蜘蛛 Agenda  简介  系统架构  系统配置  命令行工具  系统优化  第三方插件  相关资源 为什么要监控? 不可控,不可管理 Administrator 实时通知 检查状态 监控就是运维的第三只眼 系统故障宕机 了解细节,掌握全局 简介 zabbix(音同 zæbix) 是一个基于WEB界面的 提供分布式系统监视以及网络监视功能的 企业级的开源解决方案 主要特点  安装与配置简单,学习成本低  支持多语言(包括中文)  免费开源  自动发现服务器与网络设备  分布式监视以及WEB集中管理功能  可以无agent监视  通过WEB界面设置或查看监视结果  email等通知功能 三种架构 Zabbix Server Zabbix Database Zabbix Node Zabbix Proxy Web Server 监控服务器端 2:Node架构 External Scripts Agent 被监控端 SNMP IPMI JMX 计算 聚合 SSH Trapper 3:Proxy架构 1:直接连接 Proxy分布式架构 Proxy架构 vs Node架构  Node存在一些问题,2.4版本已经不支持  Node是一个完整的zabbix,会把数据同时发一份给中心Zabbix  Proxy安装时不需要导入data.sql 和 images.sql ,要不然可能会有问题  Proxy没有UI  Proxy从server同步配置,去agent端收集数据,并暂存数据  Proxy架构中zabbix_proxy是守护进程,配置文件为zabbix_proxy.conf,配置文件里proxyMode设置为0表示主动模式(推荐) ,设置为1表示被动模式  Zabbix server GUI里 proxy mode 需要和zabbix proxy的配置对应 Basic data flow DB表结构 history*表保存每一个收集来的数据,trends*表保存一些基于 小时的平均、最大、最小值信息。 每个监控项的数据格式分成5种类型: Value_type 0 浮点数据 1 字符数据 2 log数据 3 整型数据 4 文本数据 数据按照value_type存储在下面五个表中: history, history_str, history_log, history_uint, history_text 1. actions 2. alerts 3. config 4. functions 5. graphs 6. graphs_items 7. groups 8. history 、history_str、history_log 、history_uint、histroy_text 9. trends、trends_uint 10. hosts 11. hosts_groups 12. items 13. media 14. media_type 15. profiles 16. rights 17. screeens 18. screeens_items 19. sessions 20. triggers 21. trigger_depends 22. users 配 置 流 程 图 GUI-导航栏 Configuration Host vs Template Host指一台服务器或者交换机等,上面有监控点(Items),报警条件(Triggers),Trigger会一直监视Items获取到的数 据,如果达到阈值则认为故障发生,接着会触发动作Action执行故障报警动作。Host可以连接到一个或多个模板。 Template具有继承关系,可以从一个Template link到另外一个Template。 Host和Template的关系 Template就是特殊的Host,是将Host的属性进行资源抽象(即对Items,Tigger ,Graphs,Web,Discovery等进行资源抽象),不对应具体的主机,在数据库 中,他们都是在hosts表中,其中字段 stauts=0 代表Host,status=3 代表 Template。 当Host关联到Template时,Zabbix会将Template的属性直接复制到Host上,没 有继承关系。 注意:取消Host和Template关系时,如果想让Template复制过来的属性也同时 删除,需要在host里点Unlink and clear,在Template里取消关联是不能删除 复制给Host的属性的。 添加Host-关联模板 点Configuraion->Hosts->Create host 关联模板 创建Application 点Configuraion->Hosts->Applications 点我 创建Item 点Configuraion->Hosts->Item 点我 JMX  对于java应用一般会关注3大块的信息:heap,gc,thread.  旧版本的zabbix没有java gateway,通过自己写脚本来获取监控信息。  新版本的zabbix支持java gateway,可以通过jmx端口直接获取相关信息。  两个细节: 1)远程调用jmx的话,需要使用: -Djava.rmi.server.hostname=IP或hostname 2)一台机器上运行多个java的监控方法 因为jmx的item中没有port这个参数,在添加多个jmx时,会有冲突,解决方法就是新建 item的时候在name中增加空格,这样就会识别成不同的item。 Active agent checks 1:Agent会根据配置文件里的ServerActive(支持多个)和RefreshActiveChecks两个参数周期性寻找Server(s)发送请求。 2:Agent request: 3: Server response: 4:Agent分析response,然后关闭这个tcp连接 5:Agent开始周期性的收集数据 Key  查看默认Key,zabbix_agentd –p  自定义Key 在/etc/zabbix/zabbix_agentd.conf里面配置配置参数 UserParameter=key,command 除了上面这中写法,还支持参数传递的写法:UserParameter=key[*],command $1 $2 $3 …… 特殊字符\ '”`* ? [ ] { } ~ $ ! & ; ( ) < > | # @这些字符,需开启 UnsafeUserParameters=1 注意:有些自定义key取不到值,可能是目录或者命令没有权限 自定义key 作用 UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc –l Check whether MySQL is alive UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f2 -d" “ Number of MySQL threads. UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f2 -d" “ Number of processed queries. UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"|cut -f2 -d" “ Queries per second. 例子: 神马可以被监控? ● Zabbix Agent ● SNMP Agent ● IPMI Agent ● Agentless Monitoring ● Web Monitoring ● Database Monitoring ● Internal Check ● Calculated Monitoring ● Custom Command Monitoring Zabbix Agent 监控功能 什么是Trigger?Item和Trigger的关系 Trigger即触发器,它有3个状态,unknown、problem、ok,只有当状态从problem到ok或者 ok到problem才会触发action。 每一次Item取到值,包含这个Item的Trigger都会进行一次状态查询并生成Event,相当于每 个Event都有状态。 Trigger的条件可以由同一个模板多个Item组合而成(不能跨Template)。 创建Trigger 点我 创建Trigger 触发器表达式格式 {表达式}5 load1>5 表达式2: {www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5| {www.zabbix.com:system.cpu.load[all,avg1].min(600)}>2 load1>5或load1连续10分钟大于2 表达式3: {zabbix.zabbix.com:agent.version.str(beta8)}=1 检查agent的版本中是否包含字符串“beta8” 表达式4: {zabbix.zabbix.com:tick.nodata(180)}=1 三分钟没有收集到数据 表达式5: {public.monitor:system.cpu.load[,avg1].abschange(0)}<9 最后一次load1值减前一次load1值,结果的绝对值小于9 表达式6: {zabbix:system.cpu.load[all,avg1].min(300)}>2& {zabbix:system.cpu.load[all,avg1].time(0)}>000000& {zabbix:system.cpu.load[all,avg1].time(0)}<060000 00:00-06:00之间load1连续五分钟最小值大于2 触发器表达式 表达式7: {Zabbix server:net.tcp.service[ftp,,45].delta(300)}>0 五分钟内最大值和最小值之差大于0,表示服务可用状态没 有变更 表达式8: {public.monitor:system.cpu.load[,avg1].avg(600)} > {public.monitor:system.cpu.load[,avg1].avg(600,86400 )}+10 当前1小时的平均load1大于一天以前1小时的平均load1加 10 表达式9 {public.monitor:system.cpu.load[,avg1].count(600,12,”gt”) }>10 最后600秒load1大于12的次数大于10 表达式10 {public.monitor:system.cpu.load[,avg1] .count(#10,12,”gt”,86400)}>8 24小时以前最后10次load1值大于12的个数超过8 默认触发器的优化 默认模板中触发器参数不合理,需精简成适合业务的模板 如Template OS linux模板中,以下的触发器设置都不合理,需要根据实际情况来修改 {Template OS Linux:system.cpu.load[percpu,avg1].avg(5m)}>5 单颗CPU的负载 {Template OS Linux:proc.num[].avg(5m)}>300 进程数量 {Template OS Linux:agent.ping.nodata(5m)}=1 由于网络抖动而引起的误报 {Template OS Linux:kernel.maxfiles.last(0)}<1024 文件描述符,实际大于此参数 {Template OS Linux:kernel.maxproc.last(0)}<256 进程数,实际大于此参数 创建Graph Graph展示 Low-level discovery(LLD) 点我 Low-level discovery provides a way to automatically create items, triggers, and graphs for different entities on a computer LLD-创建Disconvery rules LLD-定义Item 创建Web scenarios 三个重要指标  download speed per second  response time  response code Action-根据事件源创建 点击configuration->Actions->Event source Event sources 作用 Trigger events Each time the trigger changes its state, an event is generated. Discovery events Once a host or a service is discovered, a discovery event (or several events) are generated. Auto registraion events Active agent auto-registration creates events in Zabbix. Internal events  an item changes state from 'normal' to 'unsupported'  an item changes state from 'unsupported' to 'normal'  a low-level discovery rule changes state from 'normal' to unsupported'  a low-level discovery rule changes state from 'unsupported' to 'normal'  a trigger changes state from 'normal' to 'unknown'  a trigger changes state from 'unknown' to 'normal' 创建Action 例如:Trigger events message 创建Action (Conditions) Triggers events Discovery events 创建Action (Conditions) Auto registraion events Internal events 创建Action (Operations) Send message Remote command 报警扩散(Esacalations)  故障信息可以立即通知用户  报警信息可以一直发送直到问题解决  可以延迟发送报警信息  报警信息可以升级(Escalations)发送给另一个高级用户组 报警扩散(Esacalations) 列如: 创建Media type Maps Discovery   随着环境的改变而快速搭建监控 系统,以不变应万变。 Monitoring Reports Administration Macros  Zabbix本身支持的宏变量 https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location  用户自定义宏变量: 语法:{$MACRO},在自动发现中使用的宏有固定的语法:{#MACRO}  宏变量可以和数字合用,表示主机在触发器表达式中出现的顺序位置,如{HOST.IP1} and {HOST.IP2}  通常使用宏的地方: item names item key parameters trigger names and descriptions trigger expression parameters and constants (see examples) several other locations  宏的级别有多种:其优先级如下: 1.主机级别的宏优先级最高 2.第一级模板中的宏, sorted by template ID 3.第二级模板中的宏, sorted by template ID 4.… 5.最后全局级别的宏 命令行工具 Sender - Zabbix sender is a command line utility that may be used to send performance data to Zabbix server for processing. 命令行工具 Get - Zabbix get is a process which can be used to communicate with Zabbix agent and retrieve required information from the agent. Zabbix的优化 Zabbix性能低下的表现 zabbix队列中有太多被延迟的item: Administration -> Queue zabbix绘图中经常出现断图,一些item没有数据 带有nodata()函数的触发器出现false 前端页面无响应,或者响应巨慢 解决方案: 不要使用默认的模板,定制自己的模板,监控周期适当拉长 数据库调优或者使用数据库中间件、时间序列数据库 架构优化,如使用分布式 多套zabbix,功能独立(基础监控、url监控,mysql监控分离等) Items,Trigger调优 更换更好硬件 因 素 慢 快 数据库大小 巨大 适应内存大小 触发器表达式的复 杂程度 Min(),Avg(),Max() Last(),nodata() 数据收集方法 轮询 Trapping 数据类型 文本,字符串 数值 前端用户数量 多 少 主机数量 性能(NVPS) 每个主机60个items每 分钟更新一次 10 10 100 100 1000 1000 每个主机600个item每 分钟更新一次 10 100 100 1000 1000 10000 更多:https://www.zabbix.com/documentation/2.2/manual/appendix/performance_tuning 优化-内部组件 Zabbix Server 组件 Alerter, Configuration syncer, DB watchdog,discoverer, escalator, history syncer, http poller,housekeeper, icmp pinger, ipmi poller, poller, trapper 监控zabbix内部性能数据 •Percentage of time a component is in BUSY state •zabbix[process,,,] • - trapper, discoverer, escalator, alerter, etc • - avg, count, min, max • - busy, idle 优化-内部组件 优化-数据库 1. 暴力一点可以直接到History*、Trend*表里删除没用的数据。 2. History*、trend*可以考虑用TokuDB引擎,开启分区模式。 TokuDB引擎特点:高压缩比、高 INSERT 性能,支持大多数在线修改索引、添加字段,特别适合像 Zabbix 这种高 INSERT, 少 UPDATE 的应用场景。 3. 数据库可以考虑用中间件(支持分库分表)。 4. 数据库可以考虑改用MongoDB、Cassandra、OpenTSDB。 如此强大!真实截图! 第三方插件-Zatree Zabbix Screen不能显示Host所有监控图形, 需手动一个一个添加。 所以就出现了Zatree,左栏按照分组显示所 有Host,右侧显示单个Host所有监控图形。 还有就是我比较习惯以前的cacti的查看方式。 Zatree和业务整合 Zabbix 2.3.0看2.4新特性 (1)底层自动发现多过滤器。 (2)去掉基于节点分布式监控模式。 (3)不支持的Agent项会有显示更多细节。 (4)更有效的JSON格式。 (5)宏增强。 (6)更好的触发器规则语法。 (7)API增强。 (8)统一的日期和时间格式。 (9)全局搜索。 (10)map里的应用过滤。 相关资源 官方文档 http://www.zabbix.com/documentation.php Zabbix企业级分布式监控系统 吴兆松 (作者) Zabbix监控系统深度实践 姚仁捷(作者) 谢谢! Email:zhedou#sohu.com 微博:南非蜘蛛 2014.9.4

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档

相关文档