文章目录
- 一、编译安装zabbix
- 1.环境
- 2.编译安装过程
- 二、修改agent配置文件,启动Agent
一、编译安装zabbix
1.环境
1.系统:阿里云Centos7
2.确保已安装LNMP环境
LNMP环境:linux+Nginx + Mysql + PHP
①编译安装MySQL数据库5.7教程:
②搭建nginx服务
③阿里云centos7.6安装php7.3的详细教程(超级详细)
下载zabbix-5.0.7源码包
①访问网址:https://www.zabbix.com/cn/download
②选择Zabbix Source,如下图:
③选择Zabbix 5.0 LTS,然后点击下载即可
2.编译安装过程
打算将zabbix安装在~/opt
目录下,将源码压缩包移动到~/opt
目录下。。。
①解压源码包
[ops@test1 ~/opt]$ tar -zxvf zabbix-5.0.7.tar.gz
[ops@test1 ~/opt]$ cd zabbix-5.0.7/
②安装依赖包
[ops@test1 ~/opt/zabbix-5.0.7]$ sudo yum -y install unixODBC-devel net-snmp-devel libevent-devel libxml2-devel libcurl-devel java-1.6.0-openjdk-devel如果配置添加了--enable-java,则需要安装依赖包java-1.6.0-openjdk-devel
③编译安装
[ops@test1 ~/opt/zabbix-5.0.7]$ ./configure --prefix=/home/ops/opt/zabbix-server --enable-server --enable-agent --enable-proxy --with-mysql=/home/ops/opt/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc --enable-java
--prefix=/home/ops/opt/zabbix-server //编译安装路径
--enable-server //启动服务端 ,安装部署zabbix服务器端软件
--enable-agent //安装部署zabbix被监控端软件
--enable-proxy //安装部署zabbix代理相关软件
--with-mysql=/home/ops/opt/mysql/bin/mysql_config //编译连接mysql相关依赖包,并指定mysql_config的路径
--with-net-snmp //启动snmp相关,用于snmp监控设备,允许zabbix通过snmp协议监控其他设备
--with-libcurl //安装相关curl库文件,这样zabbix就可以通过curl连接http等服务,测试被监控主机服务的状态
--with-libxml2 //启动xml相关
--with-unixodbc //启动odbc相关,用于监控数据库
--enable-java //启动java相关
[ops@test1 ~/opt/zabbix-5.0.7]$ make && make install
④初始化数据库信息,创建数据库,上线Zabbix的Web页面
数据库文件在解压后的zabbix-5.0.7目录下,具体路径:zabbix-5.0.2/database/mysql,分别按顺序导入:
schema.sql
images.sql
data.sql
[ops@test1 ~/opt/zabbix-5.0.7]$ mysql -uroot -p’123456’
mysql> create database zabbix_server character set UTF8 collate utf8_bin; //创建数据库,支持中文字符集,以及指定排序规则utf8_bin
#mysql> grant all on zabbix.* to zabbix@‘localhost’ identified by ‘zabbix’;
//创建可以访问数据库的账户与密码,我使用的是root用户,所以我就不需要这一步了
[ops@test1 ~/opt/zabbix-5.0.7]$ mysql -uroot -p’123456’ zabbix_server < database/mysql/schema.sql
[ops@test1 ~/opt/zabbix-5.0.7]$ mysql -uroot -p’123456’ zabbix_server < database/mysql/images.sql
[ops@test1 ~/opt/zabbix-5.0.7]$ mysql -uroot -p’123456’ zabbix_server < database/mysql/data.sql
⑤配置zabbix_server.conf配置文件
[ops@test1 ~/opt/zabbix-5.0.7]$ cd /home/ops/opt/zabbix-server/
[ops@test1 ~/opt/zabbix-server]$ vim etc/zabbix_server.conf
搜索以下几个字段修改:
DBHost=localhost
DBName=zabbix_server //数据库名
DBUser=root //连接数据库的用户
DBPassword=123456 //密码
DBSocket=/home/ops/opt/mysql/mysql.sock //数据库sock文件路径
DBPort=3306 //端口
LogFile=/home/ops/opt/zabbix_server/zabbix_server.log //日志文件
PidFile=/home/ops/opt/zabbix_server/zabbix_server.pid //保存pid的文件
SocketDir=/home/ops/opt/zabbix //保存sock文件的目录
⑥将mysql lib目录添加到lib环境变量中
[ops@test1 ~/opt/zabbix-server]$ echo ‘/home/ops/opt/mysql/lib/’ > /etc/ld.so.conf.d/mysql.conf #因为使用的是普通用户安装,所以需要切换到root用户自行这一步,要不没权限,echo命令不支持sudo
[ops@test1 ~/opt/zabbix-server]$ ldconfig -v
⑦启动zabbix-server
[ops@test1 ~/opt/zabbix-server]$ /home/ops/opt/zabbix-server/sbin/zabbix_server -c /home/ops/opt/zabbix-server/etc/zabbix_server.conf
如果遇到报错:/home/ops/opt/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
是因为前面将mysql lib目录添加到lib环境变量中的时候命令输入有问题,注意中英文字符 ‘/home/ops/opt/mysql/lib/’,其中单引号是英文符号才是对的
⑧配置zabbix-server前端界面
前端界面在zabbix源码包下面的ui目录当中,复制前端文件到nginx的html中
[ops@test1 ~/opt/zabbix-server]$ cd /home/ops/opt/zabbix-5.0.7/ui
[ops@test1 ~/opt/zabbix-5.0.7/ui]$ cp -r * /home/ops/opt/nginx/html/
⑨配置nginx
开启nginx服务的php支持
[ops@test1 ~/opt/zabbix-server]$ vim /home/ops/opt/nginx/conf/nginx.conf
上面配置已省略:
location / {
root html;
index index.php index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
⑩ 启动nginx
[ops@test1 ~/opt/zabbix-server]$ /home/ops/opt/nginx/sbin/nginx
当然,如果做了软链接可以直接使用软链接启动就好
11.配置php-fpm
编辑php.ini 文件,这个文件是在安装php的时候指定的,例如我的php.ini文件路径是/home/ops/opt/php/lib/php.ini
[ops@test1 ~/opt/zabbix-server]$ vim /home/ops/opt/php/lib/php.ini
修改以下参数:
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone =Asia/Shanghai
mysqli.default_socket = /home/ops/opt/mysql/mysql.sock #此sock文件按mysql实际运行生成的sock文件为准
pdo_mysql.default_socket= /home/ops/opt/mysql/mysql.sock #此sock文件按mysql实际运行生成的sock文件为准
12.重新启动php-fpm
[ops@test1 ~/opt/zabbix-server]$ sudo systemctl restart php-fpm
13.打开浏览器,访问zabbix
直接点Next step即可
没有显示红色字体的Fail则表示正确,可以直接点击Next step即可,但是如果出现红色字体的Fail,如下图:
这样说明php.ini文件配置有问题,需要将错误的字段修改post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone =Asia/Shanghai(这个也可以写其他的,一般使用这个)报错处理完毕之后点击Next step
在这里也遇到一个坑,点击Next step一直报错,不能跳到下一步,报错截图如下:
原因:这是因为创建zabbix数据库(上面创建的zabbix_server库)的时候字符集编码问题造成的
解决办法:删除mysql缘由的zabbix_server数据库,重新创建zabbix_server数据库,注意使用命令:
create database zabbix_server character set UTF8 collate utf8_bin;
新建zabbix_server数据库之后重新导入schema.sql、images.sql、data.sql文件
处理完之后点击Next step进行下一步这里正确填写数据库连接信息,填写完之后点击Next step
Name自己填,可选填
点击Next step
点击Next step
处理完之后点击Finish
点击Finish
账号:Admin
密码:zabbix
填写信息登录
二、修改agent配置文件,启动Agent
①修改配置
[ops@test1 ~/opt/zabbix-server]$ cd /home/ops/opt/zabbix/etc
[ops@test1 ~/opt/zabbix-server/etc]$ vim zabbix_agentd.conf
修改如下配置:
Server=127.0.0.1 //谁可以监控本机(被动监控模式),如果有多个主机可以监控本机,则填写ip使用逗号隔开,例如:127.0.0.1,192.168.2.5
ServerActive=127.0.0.1 //谁可以监控本机(主动监控模式)
Hostname=web1 //被监控端自己的主机名,在zabbix web页面Monitoring->Configuration->Hosts 页面更改Host name和zabbix_agentd.conf里面的Hostname一样
#EnableRemoteCommands=1 //监控异常后,是否允许服务器远程过来执行命令,如重启某个服务
UnsafeUserParameters=1 //是否允许自定义key监控
②启动Agent
[ops@test1 ~/opt/zabbix-server/etc]$ /home/ops/opt/zabbix/sbin/zabbix_agentd -c /home/ops/opt/zabbix/etc/zabbix_agentd.conf
③查看进程
④查看启动日志
无错误,正常
如果有如下图错误:
原因:在zabbix web页面Monitoring->Configuration->Hosts 页面更改Host name和zabbix_agentd.conf里面的Hostname不一至
解决:将两边的Hostname修改一致,重新启动过Agent即可