zabbix
简介
在devops的世界,监控比自动化更加的重要。好的监控工具辅助,自然事半功倍,而监控工具可谓百家争鸣。
- 有免费开源:nagios, OpenNMS
- 商业开源:zabbix
- 免费不开源:cloud insight
- SasS-based:Datadog, Hosted Graphite
当然了,有能力、人力、财力,也可以按照 statsd/collectd + graphite/influxDB/openTSDB + grafana
的模式构建自己的监控系统,其实很多初创团队利用这些免费开源的工具构造一体化(all in one)的免费不开源/提供企业收费服务的工具。
zabbix是一款开源的网络及应用监控的工具,愿景是给业界提供高级的监控管理方案。最早发布于2001年,2005年成立专职公司为企业级客户提供强大的技术支持。
是一款可靠的监控工具,方便devops团队的高效协助与沟通,数据的可视化效果,告警的方式,丰富的apis可用于自动化运维。
社区与论坛活跃,强大,wiki资源丰富。
国内有不少选其作为监控的方案,唯品会,京东,PPTV。
不过,正如esty
所说,一切监控软件最后都发展成又一个nagios。所以寻找当下最合适的就好了。
- 特点
- 分布式监控
- 自动发现功能(LLD - Low-level discovery)
- discovery of file systems (vfs.fs.discovery)
- discovery of network interfaces (net.if.discovery)
- discovery of CPUs and CPU cores (system.cpu.discovery)
- discovery of SNMP OIDs (discovery[oid1, oid2, …,])
- discovery using ODBC SQL queries (db.odbc.discovery[
, ]) - discovery of Windows services (service.discovery)
- 监控方式:agentd, snmp, jmx, impi
- 告警机制,趋势预测,预警故障
- 模板式定义需采集的测量值,支持宏定义
- 丰富的api 给自动化运维和二次开发提供了强有力的支持
- 生态健全,插件丰富,方便对接各种系统和前端展示页面(e.g. grafana)
- 缺点
- 相对graphite, influxDB, openTSDB来说,一切数据是只读的,只是依赖输入的数据做可视化,但不能对数据进行运算(切片,聚合)。
- 注意事项
- 对弈监控的机器数量或者指标快速增加的场景,一定要考虑接收数据的量,服务端性能(与数据库的交互),zabbix proxy的数量。力求减轻服务端的压力,避免内存积压。
zabbix是采用C语言实现的,采用的是LAMP(Linux + Apache + MySQL + PHP)
的组建方式。
zabbix最常用的是通过被监控机上运行的agentd进行探针式数据采集,提供了被动方式(passive)和主动方式(active)。基于json格式进行数据传输。
- 主动:agent请求server,根据配置的
RefreshActiveChecks
间隔主动获取监控项列表,并主动将监控项内需要检测的数据提交给server/proxy。 - 被动:server向agent请求获取监控项的数据,agent返回数据。
安装
- 方式
- 可以选择操作系统的包管理器(支持RedHat7/CentOS7 yum 和 Debian7&8 or Ubuntu 14.04LTS&16.04LTS的apt),通过官方的repository进行安装。
- 通过源码安装。
- 对于3.0以上版本,更提供了docker,更加的便捷。
- 包管理器方式安装
- RedHat/CentOS的包依赖:
- fping, iksemel, libssh2 packages
- zabbix官方提供了相关的包,在http://repo.zabbix.com/non-supported/rhel/7/x86_64/,只针对x64。
- 安装过程中还发现依赖
php-bcmath
和php-mbstring
,具体小版本,可以根据yum的依赖检查的信息在http://rpm.pbone.net/搜索下载 - 以上的包最方便的方式还是自己建yum repo
- fping, iksemel, libssh2 packages
- RedHat/CentOS的包依赖:
1 | copy all dependent rpms to ~/repo/packages |
1 | [ece-zabbix] |
- PHP版本:zabbix3.0要求PHP 5.4以上版本,不支持PHP7. RedHat6/CentOS6 官方repo只有php5.3.3,需要利用三方源升级到php5.4。
- RedHat6/CentOS6升级php
- 下载相关的php包(看下面的例子):https://repo.webtatic.com/yum/el6/x86_64/ 并用createrepo创建本地的php repo
- RedHat6/CentOS6升级php
1 | yum erase php php-bcmath php-cli php-common php-gd php-mbstring php-mysql php-pdo php-xml |
- 数据库
- Zabbix 支持使用MySQL和Postgres
- MySQL-server最好安装5.6以上版本,其他版本性能偏低。
- 启动服务:出于安全考虑,最好创建
zabbix
用户和用户组,用来启动server/agent的服务systemctl start zabbix-server
systemctl start httpd
- 源码安装,基于RedHat
- 依赖工具:
1 | yum install -7 gcc.x686_64 make.x686_64 mysql-devel.x686_64 libxml2-devel.x686_64 net-snmp-devel.x686_64 libcurl-devel.x686_64 |
- php version
- zabbix 3.0: > PHP5.4
- zabbix 2.2: PHP3
- PHP Web Frontend install
- check whether selinux blocks apache/httpd access
getenforce
/setenforce 0/1
getsebool <flagName> or -a
/sesebool -P <flagName> <value>
- sestatus
- check apache/httpd error log
/var/log/httpd/error_log
- set
LogLevel
todebug
in/etc/httpd/conf/httpd.conf
- set
- check whether selinux blocks apache/httpd access
- reference: http://www.hi-linux.com/2016/03/29/CentOS%206%E4%B8%8B%E5%AE%89%E8%A3%85Zabbix%203.0/
- 源码安装需要自己封一套脚本在
/etc/init.d/
,可以参考现有的zabbix-server & zabbix-agent的rpm包里面的
configuration
- zabbix server
- config location
- Package Installation:
/etc/zabbix/zabbix_server.conf
- Source Installation:
/usr/local/etc/zabbix_server.conf
and/usr/local/etc/zabbix_agentd.conf
- Package Installation:
- 主要配置数据库的host,数据库名称,用户名,密码
- config location
- zabbix frontend
- 主要是用apache,配置在
/etc/httpd/conf.d/zabbix.conf
- 配置下时区就好了。
- 主要是用apache,配置在
- zabbix agentd
- 没什么好说的,奉行简单化风格,尽量对被监控机无侵入,已支持重用指标的收集。
- 配好zabbix server的地址。
- 创建zabbix用户启动agent。
1 | groupadd zabbix |
- theme
- 还是深色的比较炫,比较专业的样子。
- screen
- 可以在页面中自定义构建监测视图。
log
- server/agent logs location
- Package Installation:
/var/log/zabbix/
- Source Installation: default in
/tmp/zabbix_server.log
, value is set in/usr/local/etc/zabbix_server.conf
- Package Installation:
- apache log in
/var/log/httpd/
坑
- zabbix 3.0,官方文档只给出了RedHat7/CentOS7的官方respository。虽然有针对RedHat5/6的repo,但是好像已经deprecated,实际上里面缺少了zabbix-server,zabbix-web。
- RHEL7 repo
- RHEL6 repo
- RHEL5 repo
- 针对RedHat6/CentOS X64,有github project做了相关的rpm包
- php相关的依赖包比较多,大部分在RedHat的官方repo会有,除了
php_bcmath
和php_mbstring
。自行搜索下载的时候注意版本,php所有相关的包都是要align在统一的小版本上的,
比如5.3.3-46.el6_7.1
,如果你下载的不是一个版本的话,yum安装的时候会出现Dependency Resolution
问题。 - mysql数据库用简单的mysql server就好了。曾尝试用mysql cluster,遇到不少问题。
- 官方的sql要求用的engine是innodb,若狗所用的mysql cluster是NDBCLUSTER做storage engine的话需要打开innodb support,才能顺利导入zabbix的schema, data …
- zabbix2.2 web setup的时候要测试和mysql的连接,但用mysql cluster的话死活连不过去,而且不能next去下一步。但3.0的版本只需要填数据库信息,不需要测试连接性,关键能next啊,与数据连接有问题的话后面再改配置呗。
- zabbix dashboard显示”zabbix server is not running”
- 原因: blocked by SELINUX
1 | shell>tail -f /var/log/audit/audit.log |
- Web frontend blocked by
403: Permission Denied
- check selinux
- check
/var/log/audit/audit.log
- change
SELINUX=enforcing
toSELINUX=disable
in/etc/selinux/config
and reboot setenforce 0
andgetenforce
orsestatus
to get current mode status- check the security context of PHP file. The type is
httpd_user_content_t
1
ls -Z /var/www/html/zabbix
- check the owernship and file mode of your PHP file content. apache needs execution permission.
- check
- check selinux
Reference
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 Kasper Deng的博客!