Alexei Vladishev创建了Zabbix 项目,当前处于活跃开发状态,Zabbix SIA提供支持.Zabbix是一个企业级的、开源的、分布式的监控套件
Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划.Zabbix支持polling和trapping两种方式. 所有的Zabbix报告都可以通过配置参数在WEB前端进行访问. Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix可以通过尽可能的配置来扮演监控你的IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司.
Zabbix是零成本的. 因为Zabbix编写和发布基于GPL V2协议. 意味着源代码是免费发布的.
Zabbix公司也提供商业化的技术支持.
程序构成 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 进程介绍1 )- zabbix_agentd 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等2 )- zabbix_get zabbix工具,单独使用的命令,通常在server 或者proxy端执行获取远程客户端信息的命令。 通常用户排错。例如在server 端获取不到客户端的内存数据, 我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。3 )- zabbix_sender zabbix工具,用于发送数据给server 或者proxy, 通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。 于是我们在脚本执行完毕之后,使用sender主动提交数据。4 )- zabbix_server zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、 zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server 备注:当然不是数据都是主动提交给zabbix_server,也有的是server 主动去取数据。5 )- zabbix_proxy zabbix代理守护进程。功能类似server ,唯一不同的是它只是一个中转站, 它需要把收集到的数据提交/被提交到server 里。 为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。6 )- zabbix_java_gateway zabbix2.0 之后引入的一个功能。顾名思义:Java网关,类似agentd, 但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。 它的数据最终会给到server 或者proxy。
zabbix部署(服务端) 1)zabbix依赖数据库配置
yum install mariadb-server
vim /etc/my.cnf,在[mysqld]下加上
1 2 skip_name_resolve =on innodb_file_per_table =on
创建zabbix授权
1 2 3 4 5 6 7 mysql -uroot -h127.0.0 .1 -e " CREATE DATABASE zabbix CHARSET 'utf8'; GRANT ALL ON zabbix.* TO zbxuser@'192.168.%.%' IDENTIFIED BY 'zbxpass'; GRANT ALL ON zabbix.* TO zbxuser@'127.0.0.1' IDENTIFIED BY 'zbxpass'; FLUSH PRIVILEGES; quit"
2)配置服务端组件
1 2 3 4 5 安装服务端:yum install zabbix-server-mysql zabbix-get 安装webGUI:yum install zabbix-web zabbix-web-mysql 安装agent端(可以监控自己):yum install zabbix-agent zabbix-sender
zabbix server 数据库初始化:(将create.sql 导入到database中)\
1 2 3 4 # rpm -ql zabbix-server -mysql |grep create /usr/share /doc/zabbix-server -mysql-3.0 .2 /create .sql .gz gzip -d creat.sql .gz mysql -h192.168 .1 .108 -uzbxuser -p zabbix < create .sql
php时区更改(可直接执行
1 sed -i '/# php_value date.timezone.*/c\\tphp_value date.timezone Asia/Shanghai' /etc/ httpd/conf.d/ zabbix.conf
修改服务端配置文件:/etc/zabbix/zabbix_server.conf(先备份)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [centos ~]# grep -i "#####" /etc/zabbix/zabbix_server.conf ############ GENERAL PARAMETERS ################# 通用参数 ############ ADVANCED PARAMETERS ################ 高级参数 ####### LOADABLE MODULES ####### 加载的模块 ####### TLS-RELATED PARAMETERS ####### TLS相关的参数 [centos ~]# egrep -v "(#|^$)" /etc/zabbix/zabbix_server.conf LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBHost= 192.168 .0 .10 DBName=zabbix DBUser=zabuser DBPassword=zabpass SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=4 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000
常用部分配置解释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # ListenPort=10051 监听的端口 默认为10051 ,默认即可 # #SourceIP:若是有多个IP,启用一个源IP,对方授权的IP # #DBHost:数据库服务地址 # #DBname:zabbix数据库名 # #DBuser:zabbix数据库账户名 # #DBpassword:zabbix数据库密码 # #DBSocket:如果database与server在同一台主机就要改,不在就没事。 # #logfile:日志文件地址 # #logfilesize:日志文件大小,(最大为1 G,0 为用不滚动) # #DebugLevel:日志记录等级(1 -5 ) # #pidfile:pid文件 ##启动:systemctl start zabbix-server,注意如果是centos是7.0 或者7.1 版本的trousers包要更新.
测试环境配置中仅改以下配置,其余配置保持默认、按需更改
1 2 3 4 5 DBHost =192.168 .0.10 DBname =zabbixDBUser =zabuserDBPassword =zabpass
服务端配置完成
1 2 3 4 5 6 7 启动httpd:systemctl start httpd.service 访问:192.168 .0.10 /zabbix http:// 192.168 .0.10 /zabbix/ setup.php 默认账户密码 admin/zabbix
zabbix/setup.php。
配置客户端agent Zabbix Agent检查有两种模式,分为主动(Agent Active)和被动(Agent)两种形式。主动与被动的说法均是相对于Agent来讨论的。
主动检查:Agent请求Server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给Server/Proxy
被动检查:Server向Agent请求获取监控项的数据,Agent返回数据。
安装agent端(可以监控自己):yum install zabbix-agent zabbix-sender
配置部分解释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 root@c7-02 :[~]: grep "####" /etc/zabbix/zabbix_agentd.conf ############ GENERAL PARAMETERS ################# EnableRemoteCommands:是否允许远程执行命令 LogRemoteCommands:远程命令执行是否记录日志 ##### Passive checks related Server:服务端地址(允许哪个ip获取数据) StartAgents:服务启动时预生成的进程数(注意不能为0 ,为0 是代表禁用被动模式) ##### Active checks related ServerActive:#主动模式的server IP地址 Hostname:主#机名(用于主动发送数据时用于标示主机名) RefreshActiveChecks:#多长时间去服务端刷新一次配置间隔 ############ ADVANCED PARAMETERS ################# ####### USER-DEFINED MONITORED PARAMETERS ####### ####### LOADABLE MODULES ####### ####### TLS-RELATED PARAMETERS ####### root@c7-02 :[~]: egrep -v "(#|^$)" /etc/zabbix/zabbix_agentd.conf LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 EnableRemoteCommands=1 Server=192.168 .0 .10 ServerActive=192.168 .0 .10 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.d/
测试环境更改以下
1 2 3 4 5 6 7 8 9 10 11 12 13 Server =192.168.0.10 可以用逗号隔开授权的有哪些ServerActive =192.168.0.10Hostname =在Web UI上声明主机时所使用相同的主机名(区分大小写),不配置则使用主机名。 systemctl start zabbix-agent.service
修改 Zabbix Server 系统语言为简体中文 对于 3.0 版本的 Zabbix Server 系统语言选择下拉框中默认是没有简体中文的,需要改动其源码,改动方式如下:
vim /usr/share/zabbix/include/locales.inc.php`,修改文件中的 `'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => false]` 的 `false` 为 `true` 即可。
1 sed -E "55s/display.*/display' => true],/" /usr/ share/zabbix/i nclude/locales.inc.php
不过中文翻译得并不贴切,而且还会有乱码(需要修改字体解决)的可能,不建议修改此项。