1、运维生存时间 Zabbix教程 从入门到精通 狠抓 zabbix细节 凉白开 2015/1/16 感谢浏览,欢迎拍砖 (虽有错别字,但核心内容犹在,谅解谅解 !) 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 1 / 266 目录 前言 6 版本记录 . 9 第一章:简介 10 Zabbix介绍 10 Zabbix特性 11 zabbix进程构成 . 13 第二章:安装 15 zabbix软硬件需求 15 Zabbix数据库硬盘容量计算 . 19 Zabbix安装 21 Zabbix升级 32 第三章:快速上手 . 34 Zabbix中文语言 34 Zabbix中文乱码
2、 36 zabbix监控第一台服务器 38 Zabbix用户管理 42 第四章: zabbix配置 . 49 配置简介 49 zabbix主机与组配置 . 51 zabbix资产清单 inventory 管理 . 55 zabbix监控项 item . 58 zabbix创建监控项 item . 58 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 2 / 266 zabbix item key详解 . 65 zabbix item types监控类型 . 68 zabbix agent 类型所有 key 70 zabbix External checks 外部命令检测
3、91 zabbix Simple checks基本检测 92 zabbix ODBC数据库监控 . 95 zabbix history trends历史与趋势数据详解 . 100 zabbix自定义用户 key与参数 User parameters 102 zabbix值映射 Value mapping 105 zabbix Applications使用介绍 . 108 zabbix触发器 triggers 109 zabbix自定义触发器严重性 . 113 zabbix触发器依赖关系详解 . 116 zabbix单位符号 Unit symbols 119 zabbix 触发器表达式详解 12
4、1 zabbix事件通知 . 127 Zabbix事件来源 129 zabbix脚本报警介质自定义 . 131 zabbix action报警配置 . 134 zabbix用户宏变量详解 macro . 139 zabbix执行远程命令 . 141 zabbix Trapper监控项配置 . 144 zabbix Aggregate checks聚合检测 . 147 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 3 / 266 zabbix Queue队列 150 第五章: zabbix SNMP 152 zabbix snmp类 型 152 snmp安装配置 155
5、snmp v3的安全配置 snmp认证与加密配置 157 zabbix如何使用 SNMP获取数据 SNMP监控实例 159 zabbix snmp自定义 OID nginx监控实例 . 161 第六章: zabbix通知媒介 . 164 zabbix报警媒介介绍 . 164 zabbix报警媒介: email . 165 zabbix报警媒介: SMS 167 zabbix报警媒介: Jabber . 169 zabbix报警媒介: Ez Texting 170 zabbix报警媒介: Custom alertscripts 172 第七章: zabbix模板 . 175 zabbix模板介绍
6、 . 175 zabbix模板创建 . 176 zabbix链接及解除模板链接 . 179 zabbix模板嵌套 Templates Nesting 182 第八章: zabbix可视化 183 zabbix图表功能介绍 . 183 zabbix简易图表详解 . 184 zabbix自定义图表 Graph . 189 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 4 / 266 zabbix Screens视图配置 . 193 zabbix Slide shows幻灯片展示 . 199 zabbix网络拓扑图配置 network map 201 zabbix拓扑图展示链
7、路状况 Link indicators 209 IT services 211 第九章: WEB监控 . 218 zabbix监控 web服务器访问性能 218 zabbix web 监控项 item详解 220 zabbix实战监控 WEB网站性能 222 zabbix监控 API . 230 第十章:维护模式 . 234 zabbix Maintenance维护周期 234 第十一章:事件确认 239 事件确认( Event acknowledgment) . 239 第十二章:网络发现 241 zabbix网络发现介绍 Discovery . 241 zabbix网络发现规则配置实战 /
8、详解( 83) . 244 zabbix客户端自动注册( 84) 245 zabbix低级别发现( 85) . 246 第十三章: API 247 Zabbix API二次开发 . 247 第十四章: zabbix命令 250 Zabbix命令: zabbix_server 250 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 5 / 266 Zabbix命令: zabbix_get 253 Zabbix命令 : zabbix_agentd . 255 Zabbix命令: zabbix_sender . 257 Zabbix命令: zabbix_proxy . 260
9、第十五章:分 布式监控 . 261 zabbix分布式监控 proxy vs nodes 261 zabbix proxy分布式监控配置 262 第十六章:性能优化 265 附录:配置文件详解 266 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 6 / 266 前言 感谢 感谢一直陪伴在我身边的老婆:兰若 ,给予我支持和鼓励,才能坚持把 zabbix 系列教程写到现在,并且完成这份 zabbix教程从入门到精通 PDF 电子书。 感谢靠谱云( )免费为本站提供云服务器。 感谢漠北、 tonyty163以及其他网友为本站提供内容 关于运维生存时间 网站名称并没有特别的意
10、思,运维时常接触到 TTL以及职业本身便是 SA( system administraotr),连起来便得到了 。域名有了,名称也就这么来了 运维生存时间。 运维生存时间历程 日期 历程 2010年 8月 4日: 购买域名 2011年 2月 13 日: 发布本站第一篇文章,团队陆续发布上百篇技术文章 2012年 本站放空的一年,偶尔更新文章 2013年 6月 22 日: 重启 TTLSA团队,用心经营本站。 将网站从国内空间迁移至 linode,并运行了将近一年时间,之后迁移至阿里云 2个月 2014年 7月 7日: 迎来了本站的首次赞助, 免费提供国内云服务器。 12月 14:Alexa排名
11、首次进入 10 万以内,排名 97901 本站用心更新,用户量也不断创新高,感谢作者们对 TTLSA的无私奉献 . TTLSA原创系列教程 当然, zabbix 只是我们系列之中的一份,我们还有更多系列教程,截至 2015 年 1 月 20 日星期二,我们一共有作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 7 / 266 六 个原创系列教程,如下: Zabbix教程 从入门到精通 作者:凉白开 电子书: http:/ 文章列表: http:/ Nginx教程 从入门到精通 作者:漠北、凉白开 电子书: http:/ 文章地址: http:/ Mongodb实战教程 作者
12、:漠北 文章地址: http:/ Mongodb官方监控: MMS 作者:漠北 文章地址: http:/ MySQL管理工具 利 器: MySQL Utilities 作者:漠北 文章地址: http:/ TTLSA带你学习 Thinkphp 作者: tonyty163 文章地址: http:/ 业务合作 一切运维有关业务可与我们联系洽谈 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 8 / 266 联系我们 E-mail: QQ: 757444407 QQ群: 6690706、 39514058(已满 ) 捐助 如果 你喜欢 我们 的 内容 , 也想 支持 我们 ,
13、 那么 捐助 我们 吧 ! 有钱 , 任性 , 那就打赏吧 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 9 / 266 版本记录 内容在不断更新中,请大家保持关注 TTLSA,最新的 PDF会同步放到官网 版本 更新内容 日期 操作人 V1.0 初始化文档 2015年 1月 20日 凉白开 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 10 / 266 第一章:简介 Zabbix介绍 Alexei Vladishev创建了 Zabbix项目,当前处于活跃开发状态, Zabbix SIA提供支持 . Zabbix是一个企业级的、开源的、分布式的监
14、控套件 Zabbix 可以监控网络和服务的监控状况 . Zabbix 利用灵活的告警机制,允许用户对事件发送基于 Email 的告警 . 这样可以保证快速的对问题作出相应 . Zabbix 可以利用存储数据提供杰出的报告及图形化方式 . 这一特性将帮助用户完成容量规划 . Zabbix支持 polling和 trapping两种方式 . 所有的 Zabbix报告都可以通过配置参数 在 WEB前端进行访问 .Web 前端将帮助你在任何区域都能够迅速获得你的网络及服务状况 . Zabbix 可以通过尽可能的配置来扮演监控你的 IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司 . Zab
15、bix是零成本的 . 因为 Zabbix编写和发布基于 GPL V2协议 . 意味着源代码是免费发布的 . Zabbix公司也提供商业化的技术支持 . 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 11 / 266 Zabbix特性 在知道 zabbix是什么之后,我们最关心的是 zabbix有什么特性,了解特性之后,我们才能决定是否会使用 zabbix,以及 zabbix是否适合我们 .Zabbix是一个高度集成的网络监控套件,通过一个软件包即可提供如下特性 数据收集 a) 可用性及性能检测 b) 支持 SNMP(trapping及 polling)、 IPMI、 J
16、MX监控 c) 自定义检测 d) 自定义间隔收集收据 e) server/proxy/agents 吸能 灵活的阀值定义 a) 允许灵活地自定义问题阀值, Zabbix中称为触发器 (trigger), 存储在后端数据库中 高级告警配置 a) 可以自定义告警升级 (escalation)、接收者及告警方式 b) 告警信息可以配置并允许使用宏 (macro)变量 c) 通过远程命令实行自动化动作 (action) 实时绘图 a) 通过内置的绘图方法实现监控数据实时绘图 扩展的图形化显示 b) 允许自定义创建多监控项视图 c) 网络拓扑 (network maps) 作者:凉白开 版本: v1.0
17、 网址: http:/(运维生存时间) 12 / 266 d) 自定义的面板 (screen)和 slide shows,并允许在 dashboard页面显示 e) 报告 f) 高等级 (商业 )监控资源 历史数据存储 a) 数据存储在数据库中 b) 历史数据可配置 c) 内置数据清理机制 配置简单 a) 主机通过添加监控设备方式添加 b) 一次配置,终生监控 (译者注:除非调整或删除 ) c) 监控设备允许使用模板 模板使用 a) 模板中可以添加组监控 b) 模板允许继承 网络自动发现 a) 自动发现网络设备 b) agent自动注册 c) 自动发现文件系统、网卡设备、 SNMP OID等
18、快速的 web接口 a) web前端采用 php 编写 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 13 / 266 b) 访问无障碍 c) 你想怎么做就能做么做 d) 审计日志 Zabbix API a) Zabbix API提供程序级别的访问接口,第三方程序可以很快接入 权限系统 b) 安全的权限认证 c) 用户可以限制允许维护的列表 全特性、 agent易扩展 a) 在监控目标上部署 b) 支持 Linux及 Windows 二进制守护进程 a) C开发,高性能,低内存消耗 b) 易移植 具备应对复杂环境情况 a) 通过 Zabbix proxy可以非常容易的创
19、建远程监控 zabbix进程构成 了解完 zabbix特性之后,本该进入 zabbix安装教程,但是我觉得在安装之前我们很有必要了解一下 zabbix进程组成结构,默认情况下 zabbix 包含 5 个程序: zabbix_agentd、 zabbix_get、 zabbix_proxy、 zabbix_sender、 zabbix_server,另外一个 zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 14 / 266 各自的作用。 zabbix_agentd 客户端守护进程,此进程收集
20、客户端数据,例如 cpu 负载、内存、硬盘使用情况等 zabbix_get zabbix 工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令。通常用户排错。例如在 server 端获取不到客户端的内存数据,我们可以使用 zabbix_get 获取客户端的内容的方式来做故障排查。 zabbix_sender zabbix工具,用于发送数据给 server或者 proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时 。于是我们在脚本执行完毕之后,使用 sender主动提交数据。 zabbix_server zabbix 服务端守护进
21、程。 zabbix_agentd、 zabbix_get、 zabbix_sender、 zabbix_proxy、 zabbix_java_gateway的数据最终都是提交到 server 备注:当然不是数据都是主动提交给 zabbix_server,也有的是 server主动去取数据。 zabbix_proxy zabbix 代理守护进程。功能类似 server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交 /被提交到 server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间 zabbix教程系列。 zabbix_java_gateway zabbix2.
22、0之后引入的一个功能。顾名思义: Java网关,类似 agentd,但是只用于 Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server或者 proxy。 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 15 / 266 第二章:安装 zabbix软硬件需求 在了解完 zabbix进程构成之后,我们接着聊 zabbix的硬件配置、软件需求,或者说我安装 zabbix需要什么软件,服务器需要什么样的配置,监控 100台服务器需要怎样的一台服务器,或者我有一台 8核 16G的服务器,我能监控多少台服务器?来,带着困惑往下看 .
23、 硬件需求 无非就是 cpu、内存、硬盘之类的 a) CPU 由你的 zabbix数据库使用情况来做决定,如果你监控的项目越多,那你的 cpu要越好。具体多好,下面有个表格 b) 1.2 内存与硬盘 最基本的需求: 128MB 内存、 256MB 硬盘,当然这样的机器这年头应该找不到了吧,尤其要说明硬盘的问题,你的监控项越多、历 史记录保留时间的越久数据库将会越大。我所知道的 100 来台服务器,做基本的 cpu、内存、硬盘、网卡流量等监控,长年累月下来大概 60GB左右。 c) 1.3 其他硬件 如果你觉得有必要的话,你再准备一个 GSM短信猫吧,不过很少人用,基本上都使用 email或者飞
24、信报警 . d) 1.4 硬件需求表 如上, P2 的 CPU、 256MB 内存已经可以监控 20 个主机。 AMD 3200+/2G 内存可以监控 500 个主机( 05 年大学的时候,中低端主流 cpu,这都快 10年了,尤其可见 zabbix对服务器的硬件配置要求有多低) ,现在的作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 16 / 266 服务器一般都比上面最高配还来得高,所以我武断的认为,大家手头的服务器都有能力监控 1w+以上的服务器,我再武断的认为手头上有 1w+服务器的公司能有多少 . 操作系统 支持如下平台,平台之多让人刮目相看,但是 window
25、只能跑客户端 Linux IBM AIX FreeBSD NetBSD OpenBSD HP-UX Mac OS X Solaris Windows: 2000, Server 2003, XP, Vista, Server 2008, 7, 8, Server 2012 (只能跑 Zabbix agent) 软件需求 数据库 MySQL: 5.0.3或者以上,推荐使用 InnoDB引擎( TTLSA推荐使用 MySQL,开源免费资料多) Oracle: 10g或者以上 PostgreSQL: 8.1或者以上 . SQLite: 3.3.5或者以上 IBM DB2: 9.7或者以上 WEB应用
26、 Apache: 1.3.12或者以上 PHP: 5.3.0或者以上, zabbix早期版本支持 5.2,但是 2.2版本只支持到 5.3 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 17 / 266 PHP扩展: 名称 版本 必须/可选 gd - 必须 bcmath - 必须 ctype - 必须 libXML 2.6.15或以上 必须 xmlreader - 必须 Xmlwriter - 必须 Session - 必须 sockets - 必须 mbstring - 必须 gettext - 必须 ibm_db2 - 可选 mysqli - 推荐 oci8 - 可
27、选 pgsq - 可选 sqlite3 - 可选 服务器 以下内容都为可选项,如果你需要监控特定项,安装特定支持即可。 OpenIPMI: IPMI硬件监控 libssh2:版本 1.0以上,监控 ssh服务 fping: icmp监控项 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 18 / 266 libcurl:监控 web项 . libiksemel:支持 jabber报警 net-snmp:增加 SNMP支持 JAVA网关 如果你需要通过 Java网关来监控你的 Java进程,那么你需要增加如下支持 包名 地址 兼容性 logback-core-0.9.27.
28、jar http:/logback.qos.ch/ 0.9.27、 1.0.13、 1.1.1 logback-classic-0.9.27.jar http:/logback.qos.ch/ 0.9.27、 1.0.13、 1.1.1. slf4j-api-1.6.1.jar http:/logback.qos.ch/ 1.6.1、 1.6.6,、 1.7.6. android-json-4.3_r3.1.jar https:/ 2.3.3_r1.1、 4.3_r3.1 时间同步 最重要的一点在最后提,请确保你所有的服务器时间都是正确的,为了确保时间 ok,请在 crontab 里面加上定时
29、时间同步。 # crontab -l 00 00 * * * /usr/sbin/ntpdate -u 195.13.1.153 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 19 / 266 Zabbix数据库硬盘容量计算 本次案例: 100台服务器,每台服务器有 30个监控项,每个监控项 60 秒刷新一次,需要多大的硬盘呢? 众所周知, zabbix基本都是通过 web配置,这些配置数据也是存放到数据库里的,但是它对硬盘容量的要求基本可以忽略不计, zabbix对硬盘的决定性因素有 4个,如下: 1. 每秒处理的数据量 这个问题不说,大家也明白。这边的每秒只是一个平
30、均值,例如我有 3000个监控项,每 60秒刷新一次,那么平均每秒有 50( 3000/60)个数据要处理。就是说每秒有 50条数据要插入 MySQL 2. 历史记录保存时间 zabbix 对每个监控项的值都要记录下来,这些记录一般保留几周到几个月,具体看你的配置了。每个值都需要暂用硬盘空间。假如一个数据你要保留 30天,而且每秒有 50个值要保留,那我们一共有 129, 600, 000( 30 天*24 小时 *3600 秒) *50 个值,一条记录多大,由你的数据库引擎和你存储的数据类型来决定 (浮点型,整形,字符型等等),一般来说一条记录需要占用 50 个字节(一个大概值),在这个案例
31、中 129,600,000 个记录大约需要( 129600000*50字节) 6.5G的硬盘空间 3. 趋势数据保存时间 什么是趋势数据呢?当你查看一周或者一月的图表,图表上看到的 MAX/MIN/AVG/COUNT 都是取自趋势数据,趋势数据一小时获取一次,一般情况下,趋势数据一条记录大概占用 128字节,如果我们想保存 5年趋势数据, 3000个监控线需要 2.4GB( 3000个 *24小时 *356天 *128字节)每年, 5年一共 16.8G 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 20 / 266 4. 事件记录保存时间 报警、警告、恢复等等事情,一个
32、事件大概占用 130 个字节,一般情况下不会太多,除非运维做的太糟糕,或者运维要求太严格,把阀值调的很低。假如这个运维今年本命年,既没拜佛有没烧香,跟别说给服务器贴灵符,于是这一年每秒钟就有一个事件发生,那么事件这一年占用的数据空间为: 1年 *365天 *24小时 *3600秒 *130字节大概为 4.1G空间。 5. 数据库空间计算公式 zabbix配置:固定大小,一般 create database zabbix default charset utf8; mysql quit; # mysql -uroot -pttlsapwd zabbix database/mysql/schema
33、.sql 备注:创建数据库请别忘记加 default charset utf8,有可能会导致你出现中文乱码问题,具体问题请查看 zabbix中文乱码解决方法 如果你仅仅是初始化 proxy 的数据库,那么够了。如果初始化 server,那么接着导入下面两个 sql # mysql -uroot -pttlsapwd zabbix database/mysql/images.sql # mysql -uroot -ppttlsapwd zabbix database/mysql/data.sql 其他数据库( db2sqliteoracle)数据库初始化方法参考: https:/ 2.4 配置z
34、abbix 配置 zabbix_server配置文件 ,zabbix源码目录下 # mkdir /etc/zabbix # cp config/zabbix_server.conf /etc/zabbix/ # vim /etc/zabbix/zabbix_server.conf DBName=zabbix DBUser=root DBPassword=ttlsapwd DBPort=3306 2.5 启动zabbix server # /usr/local/zabbix-2.2.2/sbin/zabbix_server 默认端口 10051 作者:凉白开 版本: v1.0 网址: http:
35、/(运维生存时间) 25 / 266 3. 客户端安装配置 3.1 下载安装客户端 所有版本下载地址: http:/ # cd /usr/local/src # wget “http:/ server_name ; access_log /data/logs/nginx/.access.log main; index index.html index.php index.html; root /data/site/; location / try_files $uri $uri/ /index.php?$args; location (.+.php)(.*)$ fastcgi_split_pa
36、th_info (.+.php)(.*)$; include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param PATH_INFO $fastcgi_path_info; 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 27 / 266 4.3 在线配置zabbix 浏览器打开 http:/ 如下是 zabbix 2.2的安装界面,包括欢迎界面一共 6步 . 4.3.1 欢迎界面 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 28 / 266 4.3.2 php需求检查 4.3.3 MySQL配置 作者:凉白开 版本: v1.0 网址: http:/(运维生存时间) 29 / 266 4.3.4 zabbix服务端详细信息 4.3.5 zabbix安装前信息列表