文章目录
写在最前头,本文是个人通过测试和生产环境总结下来的文章,并作了小部分处理,文中可能会存在某些描述不准确或错误的地方,欢迎各位大佬评论指出,互相学习!
Server端
系统:Centos 7
实验环境中请确保selinux和防火墙为关闭状态,所需要的zabbix安装包在zabbix官网上下载。
本次实验架构是 LAMP
Apache
yum install -y httpd
vi vi /etc/httpd/conf/httpd.conf #默认安装目录
DirectoryIndex index.html index.php #添加index.php
Mysql
yum install -y mariadb mariadb-server
PHP
(yum默认安装5.4,建议安装5.5,不然后面会有坑)
yum install -y php php-mysql php-devel php-gd php-bcmath php-mbstring php-xml php-xmlwriter php-xmlreader php-ctype php-session php-gettext
测试apache是否能正常显示php
vi /var/www/html/index.php
<?php echo phpinfo(); ?>
修改php参数
vi /etc/php.ini
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_execution_time = 300
max_input_time = 300
session.auto_start = 0
mbstring.func_overload = 0
date.timezone = Asia/Shanghai
安装依赖包
yum install -y net-snmp gcc libxml2-devel net-snmp-devel libevent-devel libcurl-devel unixODBC-devel
修改数据库
创建zabbix数据库
数据库名为“zabbix”,密码“zabbix”
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
flush privileges;
导入模板数据
use zabbix
source schema.sql;
source images.sql;
source data.sql;
测试数据库是否连接成功
通过apache页面反馈,成功返回“success”,失败则“fail”。
vi /var/www/html/index.php
<?php
$link=mysql_connect('localhost','zabbix','zabbix');
if(!$link) echo "fail";
else echo "success";
mysql_close();
?>
编译安装
在解压文件夹下进行编译安装。
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-mysqli
出现 Now run ‘make install’ 则表示编译成功,进行make install安装。
make install
修改zabbix_server配置
要设置数据库密码,本文密码为“zabbix”
vi /usr/local/etc/zabbix_server.conf
DBHost=localhost
DBPassword=zabbix
Timeout=20
查看zabbix启动日志
启动正常。
zabbix-agent(服务端的Agent)
启动服务器的agent用于监控服务器,默认日志位置 zabbix_agentd.log (详细参考agent配置)
zabbix_agentd
zabbix-web
在apache目录下创建文件用来放zabbix前端界面的配置文件
mkdir /var/www/html/zabbix
cp -a frontends/php/* /var/www/html/zabbix/ #在zabbix解压包根目录下
chmod -R 755 /var/www/html/zabbix/
chown -R root:root /var/www/html/zabbix/
浏览器输入 http://ip/zabbix 打开zabbix前端界面。
next step
根据报错去修改参数
全部‘OK’,next step
输入数据库密码,本文设置的为"zabbix"
登陆,账号:Admin 密码:zabbix
问题一:za-server日志网络错误
问题描述:Zabbix agent item “system.users.num” on host “Zabbix server” failed: first network error, wait for 15 seconds
解决方法:编辑zabbix_server.conf和zabbix_agent.conf,把 timeout时间改为20。
问题二:apache日志报权限问题
问题描述:zabbix_server端启动日志正常,apache报错“Permission Denied because search permissions are missing on a component of the path”
解决方法:权限问题
确保apache网站目录下有执行权限。
chmod -R 755 /var/www/html/zabbix/
把apache启动用户、组改为zabbix,与zabbix的启动用户一致,避免出现权限问题。(可以ps查看两个进程所属用户)
vi /etc/httpd/conf/httpd.conf
User zabbix
Group zabbix
systemctl restart httpd
问题三:web端next step没反应
问题描述:Web端欢迎界面点击“next step”没反应
修改/var/lib/php/session/宿主或者添加777权限
问题四:web提示缺少配置文件
缺少配置文件,但是提供了解决方法,点击“Download”下载一个“zabbix.conf.php”文件,把它上传到指定路径,同时把文件权限改为755。
重新刷新网页。
问题五:web端监控项空白
问题描述:查看apache日志提示PHP Fatal error: Call to undefined function array_column() in /var/www/html/zabbix/items.php on line 2025
解决方法:缺少array_column()函数,php5.5才有这个新特性,两个解决方法,第一是更新php版本到5.5,第二是在日志报错php文件中添加自定义的array_column()函数,我选择第二种。
vim /var/www/html/zabbix/items.php
#文件中添加
if (! function_exists('array_column')) {
function array_column(array $input, $columnKey, $indexKey = null) {
$array = array();
foreach ($input as $value) {
if ( ! isset($value[$columnKey])) {
trigger_error("Key \"$columnKey\" does not exist in array");
return false;
}
if (is_null($indexKey)) {
$array[] = $value[$columnKey];
}
else {
if ( ! isset($value[$indexKey])) {
trigger_error("Key \"$indexKey\" does not exist in array");
return false;
}
if ( ! is_scalar($value[$indexKey])) {
trigger_error("Key \"$indexKey\" does not contain scalar value");
return false;
}
$array[$value[$indexKey]] = $value[$columnKey];
}
}
return $array;
}
}
再次查看Zabbix-web监控项,正常显示
Zabbix-agent编译安装在我下一篇文章处。