一、引言
在 Linux 环境下,有许多实用的系统监控软件,如 Nagios、Cacti、Zabbix、Monit等。这些开源软件能帮助我们更好地管理机器,及时发现问题并警告系统维护人员。今天我们将重点研究 Zabbix,使用它的目的是为了更好地监控MySQL 数据库服务器,并生成图形报表。相较于 Nagios,Zabbix 在这方面功能更为强大。
二、Zabbix 简介
1. 定义
Zabbix 是一个基于 WEB 界面的,提供分布式系统监视以及网络监视功能的企业级开源解决方案。
2. 组成部分
Zabbix 由 Zabbix server 与可选组件 Zabbix agent 两部分组成。
- Zabbix server 可以通过 SNMP、Zabbix agent、ping、端口监视等方法,提供对远程服务器/网络状态的监视。
- Zabbix agent 需要安装在被监视的目标服务器上,主要完成对硬件信息或与操作系统有关的内存、CPU 等信息的收集。
3. 主要特点
- 学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及 WEB 集中管理功能
- 可以无 agent 监视
- 用户安全认证和灵活的授权方式
- 通过 WEB 界面设置或查看监视结果
- 具备 email 等通知功能
4. 主要功能
- CPU 负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
5. 官方安装资料
官方提供了详细的安装资料,可访问:官网
三、搭建 ZABBIX 准备资源
- 需要服务器是 LAMP 环境或 LNMP 环境。
- 主机名和 IP 要写在 HOST 文件里。
- iptables 和 selinux 必须关闭,在生产环境中,可只开放防火墙端口。
四、搭建 LAMP 环境(yum 安装)
yum -y install gcc net-snmp-devel curl-devel OpenIPMI
yum -y install mysql* php* http*
安装完成后,测试 web 能否访问 php 页面:
- 添加 php 页面:
vi /var/www/html/index.php
在文件中添加以下内容:
<?phpphpinfo();
?>
- 查看是否有该进程:
netstat -anlp|grep :80
- 使用浏览器访问测试:
http://ip地址:端口号
五、服务端安装步骤
1. 安装 LAMP 环境及依赖包
yum install -y mysql-server mysql-devel libcurl-devel net-snmp-devel php php-gd php-xml php-mysql php-mbstring php-bcmath httpd gcc c++ gcc-c++ curl-devel xmlrpc
2. 添加用户并设置启动项
[root@localhost ~]# groupadd zabbix
[root@localhost ~]# useradd zabbix -g zabbix
[root@localhost ~]# chkconfig httpd on
[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# chkconfig snmpd on
3. 创建数据库,添加用户授权
[root@localhost ~]# /etc/init.d/mysqld start
进入 MySQL 命令行,执行以下命令:
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by '123456';
4. 编译安装 zabbix
[root@localhost ~]# tar xvf zabbix-3.0.9.tar.gz
[root@localhost ~]# cd zabbix-3.0.9
[root@localhost zabbix-3.0.9]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl
[root@localhost zabbix-3.0.9]# make && make install
[root@localhost zabbix-3.0.9]# mysql -uzabbix -p123456 < database/mysql/schema.sql zabbix
[root@localhost zabbix-3.0.9]# mysql -uzabbix -p123456 < database/mysql/images.sql zabbix
[root@localhost zabbix-3.0.9]# mysql -uzabbix -p123456 < database/mysql/data.sql zabbix
5. 修改配置文件
[root@localhost ~]# vi /usr/local/zabbix/etc/zabbix_server.conf
修改以下内容:
LogFile=/tmp/zabbix_server.log #log日志
PidFile=/tmp/zabbix_server.pid #pid
DBName=zabbix #数据库名字
DBUser=zabbix #数据库授权用户
DBPassword=123456 #数据库授权密码
DBSocket=/var/lib/mysql/mysql.sock #数据库sock的文件路径
ListenIP=10.0.8.223 #服务端ip地址
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #脚本路径
6. 拷贝启动文件,修改启动文件,授权等
cp /usr/local/src/zabbix-3.0.9/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
cp /usr/local/src/zabbix-3.0.9/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
[root@localhost ~]# vi /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
[root@localhost ~]# vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix
[root@localhost ~]# vi /etc/services
zabbix-agent 10050/tcp Zabbix Agent
zabbix-agent 10050/udp Zabbix Agent
zabbix-trapper 10051/tcp Zabbix Trapper
zabbix-trapper 10051/udp Zabbix Trapper
[root@localhost ~]# chmod +x /etc/init.d/zabbix_server #执行权限
[root@localhost ~]# chmod +x /etc/init.d/zabbix_agentd #执行权限
[root@localhost ~]# chkconfig zabbix_server on #添加开机启动
[root@localhost ~]# chkconfig zabbix_agentd on #添加开机启动
[root@localhost ~]# /etc/init.d/iptables stop #关闭防火墙
7. 拷贝 zabbix 安装页,授权等
[root@localhost ~]# cp -r /usr/local/src/zabbix-3.0.9/frontends/php/ /var/www/html/zabbix
[root@localhost ~]# chown -R zabbix:zabbix /var/www/html/zabbix
[root@localhost ~]# chmod 777 -R /var/www/html/zabbix
8. 修改 php 配置文件
[root@localhost ~]# vi /etc/php.ini #编辑修改
修改以下内容:
post_max_size =16M
max_execution_time =300
max_input_time =300
date.timezone = Asia/Shanghai
9. 启动 zabbix 服务
[root@localhost ~]# /etc/init.d/zabbix_server start #服务端服务
[root@localhost ~]# /etc/init.d/zabbix_agentd start #客户端服务
[root@localhost ~]# netstat -ntlp |grep zabbix #查看服务进程是否启动
10. 测试访问
http://ip地址:端口号
六、客户端安装步骤
[iyunv@zabbix-c1 ~]# yum install tree gcc gcc-c++ -y
[root@localhost ~]# groupadd zabbix
[root@localhost ~]# useradd zabbix -g zabbix
[root@localhost ~]# cd /usr/local/src
[root@localhost ~]# tar zxf zabbix-3.0.9.tar.gz
[root@localhost ~]# cd zabbix-3.0.9
[root@localhost zabbix-3.0.9]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@localhost zabbix-3.0.9]# make && make install
[root@localhost zabbix-3.0.9]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@localhost zabbix-3.0.9]# vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix/
[root@localhost zabbix-2.0.6]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
修改以下内容:
PidFile=/tmp/zabbix_server.pid #pid
LogFile=/tmp/zabbix_agentd.log #log日志
Server=10.0.8.223 #服务端ip地址
ServerActive=10.0.8.223 #服务端ip地址
Hostname=zabbix_user #服务端主机名
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ #子配置文件
UnsafeUserParameters=1 # #启用自定义key
启动客户端服务
[iyunv@zabbix-c1 ~]# /etc/init.d/zabbix_agentd start #客户端服务
[root@localhost ~]# netstat -ntlp |grep zabbix #查看服务进程是否启动
最后,去 web 上添加主机。
七、常见问题及解决方法
问题描述
cannot send list of active checks to [127.0.0.1]: host [Zabbix server] not monitored
在监控中显示 Zabbix 状态:Zabbix 服务端运行中 值是 NO(不)
解决方法
- 检查端口是否已开启。
- 检查是否已打开防火墙,若已打开,请添加例外,或者关闭防火墙。
- 服务端的主机名必须与客户端 Hostname 一样。
- 关闭 SELinux(Security Enhanced Linux[安全加强的 Linux]):
gedit /etc/sysconfig/selinux
将内容修改为:
SELINUX=disabled
通过以上步骤,你就可以在 CentOS 6.9 系统上成功安装并配置 Zabbix 3.0 进行系统监控了。