zabbix依赖与lnmp或lamp(此处使用lamp)

主要的几个程序:

1、zabbix_server:zabbix 服务端核心服务,事务处理都在于它 

2、zabbix_agentd: 客户端守护进程,此进程收集客户端数据,例如 CPU负载、内存、硬盘使用情况等

3、zabbix_get:主要用于测试监控项是否能够正常使用

4、zabbix_sender: 用于发送给 server 或者 proxy,通常用于耗时比较长的检查,避免超时

5、zabbix_proxy: 特殊的网络环境可以作为一个中转站,从 agent 到 proxy 再到 server 这样实现

此文借鉴于:;https://my.oschina.net/u/3805108/blog/2960593 https://www.cnblogs.com/biaopei/p/9877747.html Zabbix 本身可以直接使用自带的脚本运行,但是其 WEB 端是 PHP 写的,所以我们就需要搭建 LAMP 环境。

服务 版本
操作系统 centos7
php 5.4.16
apache 2.4.6
数据库 maridb

如果是内网服务器需要先配置本地yum源,如果是外网可以略过此步; 在根下创建一个文件 (1) 在根目录创建一个文件。 [root@host-172-16-69-20 /]# mkdir iso 把根iso镜像挂载到创建的根文件中 [root@host-172-16-69-20 /]# mount -o loop /home/CentOS-6.5-x86_64-bin-DVD1.iso /iso 找到yum路径把默认的文件备份好, 1:[root@host-172-16-69-20 iso]# cd /etc/yum.repos.d/ 2:[root@host-172-16-69-20 yum.repos.d]# mkdir bak 3:[root@host-172-16-69-20 yum.repos.d]# mv *.repo bak/ 4: touch iso.repo 把下列代码放入iso.repo文件里 [iso] name=iso baseurl=file:///iso gpgchesk=0 enabled=1

wq保存 清初yum缓存 #yum clean all #yum repolist 或 #yum install gcc*


我这里直接使用yum安装http服务了;如果觉的不麻烦可以使用编译安装

  1. #yum install -y httpd
  2. #systemctl enable httpd
  3. #systemctl restart httpd 安装数据库,由于centos7自带maridb我这里同样使用
  4. [root@zabbix ~]# yum install mariadb mariadb-server mariadb-libs mariadb-devel
  5. [root@zabbix ~]# systemctl restart mariadb.service
  6. [root@zabbix ~]# systemctl enable mariadb.service 安装zabbix所需要的php组件;注意有些组件在本地自带的yum源中是没有rpm包需要在外网下载rpm包上传服务器中,可以使用这个网址去上面下载所需rpm包:http://www.rpmfind.net/linux/rpm2html/search.php?query=php-mariadb&submit=Search+...&system=&arch= ;
  7. [root@zabbix ~]# yum install -y php php-mysql php-fpm
  8. [root@zabbix ~]# systemctl restart php-fpm
  9. [root@zabbix ~]# systemctl restart php-fpm 下载之后使用rz传入服务器直接rpm -vih 加rpm包安装。如果报下错: error: Failed dependencies: libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed by php-fpm-5.4.16-46.el7.x86_64 是需要安装依赖包libcrypto.so.10(OPENSSL_1.0.2),去外网下载依赖包使用rpm安装;
  1. 测试lamp环境是否ok,在以上环节启动服务都没报错的情况下,在apache默认网站服务器下,输入以下测试内容,重启httpd,在网页上显示以下内容就表示ok. [root@zabbix ~]# vim /var/www/html/index.php

<?php phpinfo(); ?>

[root@zabbix ~]# systemctl restart httpd 如果出现上图代表php环境部署正常


开始配置数据库 [root@zabbix ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> insert into mysql.user(Host,User,Password) values("localhost","zabbix",password("mimimama")); Query OK, 1 row affected, 4 warnings (0.01 sec)

MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by "mimimama" -> ; ERROR 1133 (42000): Can't find any matching row in the user table MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by "mimimama"; ERROR 1133 (42000): Can't find any matching row in the user table MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by "mimimama"; Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)


以上内容 mysql -u root -p #用root登录,默认无密码,所以按两下回车即可 insert into mysql.user(Host,User,Password) values("localhost","zabbix",password("mimimama")); #添加一个mysql用户zabbix并设置密码为mimimama CREATE DATABASE zabbix character set utf8 collate utf8_bin; #创建zabbix数据库并且编码为utf8 grant all on zabbix.* to zabbix@localhost identified by "mimimama"; ERROR 1133 (42000): Can't find any matching row in the user table

#grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";但此时有个错误,原因是创建了用户没刷新数据库,导致赋予zabbix用户权限时失败 flush privileges; Query OK, 0 rows affected (0.00 sec) #刷新数据库 grant all on zabbix.* to zabbix@localhost identified by "mimimama"; Query OK, 0 rows affected (0.00 sec) #此时就没异常了 flush privileges; Query OK, 0 rows affected (0.00 sec) #再刷新次数据库,使权限的设定生效 quit #退出数据库


测试是否生效

[root@zabbix ~]# vim /var/www/html/index.php <?php

$link=mysql_connect('127.0.0.1','zabbix','mimimama');

if($link) echo "Success!!";

else echo "Fail!!";

mysql_close();

?>


开始安装zabbix 安装zabbix所需要EPEL源和zabbix的yum源 同样注意: 在本地自带的yum源中是没有php-mbstring,php-bcmath,rpm包需要到外网下载rpm包 使用命令安装 rpm -ivh php-mbstring-5.4.16-42.el7.x86_64.rpm
rpm -ivh php-bcmath-5.4.16-42.el7.x86_64.rpm zabbix软件包 zabbix-4.2.4.tar.gz 上传zabbix-4.2.4.tar.gz到服务器/usr/local/src目录下面 cd /usr/local/src #进入软件包下载目录 tar xvf zabbix-4.2.4.tar.gz #解压 1.cd /usr/local/src/zabbix-4.2.4/database/mysql #进入mysql数据库创建脚本目录 2.ls #列出文件,可以看到有schema.sql、images.sql、data.sql这三个文件 3.mysql -u root -p #输入密码,进入MySQL控制台如果忘记密码直接敲喜恶mysql不需要输密码; 4.use zabbix #进入数据库 注意:请按照以下顺序进行导入,否则会出错。 source /usr/local/src/zabbix-4.2.4/database/mysql/schema.sql; #导入脚本文件到zabbix数据库 source /usr/local/src/zabbix-4.2.4/database/mysql/images.sql; #导入脚本文件到zabbix数据库 source /usr/local/src/zabbix-4.2.4/database/mysql/data.sql; #导入脚本文件到zabbix数据库 exit #退出


cd /usr/lib64/mysql #32位系统为/usr/lib/mysql,注意系统版本同,文件版本可能不一样,这里是18.0.0 ln -s libmysqlclient.so.18.0.0 libmysqlclient.so #添加软连接

1.安装依赖包 #CentOS使用yum命令安装 yum install net-snmp-devel curl curl-devel 备注:以上软件包如果在安装Web环境LAMP或者LNMP时已经安装过,此步骤可忽略 全部安装完之后使用下面语句 ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2


这里可以简单的说下编译参数:

1、ennable server 和 agent 代表本机 Server 端和 Agent 端都安装

2、with mysql 知道的文件是本机安装 MySQL 下的,如果你安装的路径和我不同,你可以使用 find 查找一下你的 mysql_config 在哪里

3、net snmp 是 Zabbix 监控需要用到的

make #编译 make install #安装 ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ #添加系统软连接 ln -s /usr/local/zabbix/bin/* /usr/local/bin/ #添加系统软连接 说明:find / -name mysql_config 查找位置,如果没有mysql_config,需要安装yum install mysql-devel 4、添加zabbix服务对应的端口 vim /etc/services #编辑,在最后添加以下代码(在添加之前先查找是否有以下内容,如果有,则不需要添加) #Zabbix zabbix-agent 10050/tcp # Zabbix Agent zabbix-agent 10050/udp # Zabbix Agent zabbix-trapper 10051/tcp # Zabbix Trapper zabbix-trapper 10051/udp # Zabbix Trapper :wq! #保存退出 services文件中内容很多可以是使用vim中/查找


修改zabbix配置文件 cd /usr/local/zabbix/etc vim /usr/local/zabbix/etc/zabbix_server.conf DBName=zabbix #数据库名称 DBUser=zabbix #数据库用户名 DBPassword=mimimama #数据库密码 ListenIP=127.0.0.1 #数据库ip地址


AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #zabbix运行脚本存放目录 :wq! #保存退出


vim /usr/local/zabbix/etc/zabbix_agentd.conf Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ UnsafeUserParameters=1 #启用自定义key :wq! #保存退出


6,添加开机启动脚本 cp /usr/local/src/zabbix-4.2.4/misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server #服务端 cp /usr/local/src/zabbix-4.2.4/misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd #客户端 chmod +x /etc/rc.d/init.d/zabbix_server #添加脚本执行权限 chmod +x /etc/rc.d/init.d/zabbix_agentd #添加脚本执行权限 chkconfig zabbix_server on #添加开机启动 chkconfig zabbix_agentd on #添加开机启动


7修改zabbix开机启动脚本中的zabbix安装目录 vim /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件 BASEDIR=/usr/local/zabbix/ #zabbix安装目录 :wq! #保存退出 vim /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件 BASEDIR=/usr/local/zabbix/ #zabbix安装目录 :wq! #保存退出


三、配置web站点 cd /usr/local/src/zabbix-4.2.4 cp -r /usr/local/src/zabbix-4.2.4/frontends/php /var/www/html/zabbix


启动 Zabbix Server:CentOS 7 第一次启动容易出现各种毛病,建议使用全路径启动,之后就可以用 /etc/init.d/zabbix_server start 启动了 使用下面命令查看端口是否启动成功: netstat -an | grep 10051 如果端口正常代表安装成功,如果失败查看zabbix_server.config日志存储在/tmp/zabbix_server.log,有问题可以查看这个日志文件; 这里遇到的问题是服务启动没有相关进程及端口,根据zabbix_server.config配置文件找到默认pid文件路径; 在/tmp/下,发现没有pid文件查看日志提示权限不够。手动touch一个zabbix_server.pid文件;并把文件归属于zabbix用户,同样上级目录也归为zabbix用户;重启zabbix_server服务生成进程;但是端口10051还是没有。 查看日志显示密码错误 1362:20190725:152055.855 [Z3001] connection to database ‘zabbix’ failed: [1045] Access denied for user ‘zabbix’@ ‘localhost’ (using password: NO)


登陆myql数据库修改zabbix账号密码具体方式这里不阐述了; 修改之后记得刷新数据库权限 flush privileges; grant all on zabbix.* to zabbix@localhost identified by "zabbix111"; exit; 编辑 /etc/zabbix/zabbix_server.conf 添加DBPassword=zabbix111 重启服务 service zabbix-server restart 使用下面命令查看端口是否启动成功: netstat -an /grep 10051 10051 端口出现


现在我们先来尝试访问zabbix ,访问地址服务器ip/zabbix

点击下一步

这个需要修改php配置文件和添加php扩展就可以了

我们先修改/etc/php.ini文件,将对应参数做如下修改

max_execution_time = 300 max_input_time = 300 post_max_size = 16M date.timezone =Asia/Shanghai

添加扩展,注意由于我这里yum源的组件版本与php版本不对导致我yum安装扩展直接报错要么重配yum源头或者在外网下载对应的扩展版本我选择第二种外网下载rpm包使用rpm -vih +扩展组件 oaded plugins: fastestmirror, langpacks Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast file:///iso/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /iso/repodata/repomd.xml" Trying other mirror. Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package php-gd.x86_64 0:5.4.16-21.el7 will be installed --> Processing Dependency: php-common(x86-64) = 5.4.16-21.el7 for package: php-gd-5.4.16-21.el7.x86_64 --> Processing Dependency: libt1.so.5()(64bit) for package: php-gd-5.4.16-21.el7.x86_64 --> Processing Dependency: libXpm.so.4()(64bit) for package: php-gd-5.4.16-21.el7.x86_64 --> Running transaction check ---> Package libXpm.x86_64 0:3.5.10-5.1.el7 will be installed ---> Package php-gd.x86_64 0:5.4.16-21.el7 will be installed --> Processing Dependency: php-common(x86-64) = 5.4.16-21.el7 for package: php-gd-5.4.16-21.el7.x86_64 ---> Package t1lib.x86_64 0:5.1.2-14.el7 will be installed --> Finished Dependency Resolution Error: Package: php-gd-5.4.16-21.el7.x86_64 (iso) Requires: php-common(x86-64) = 5.4.16-21.el7 Installed: php-common-5.4.16-46.el7.x86_64 (installed) php-common(x86-64) = 5.4.16-46.el7 Available: php-common-5.4.16-21.el7.x86_64 (iso) php-common(x86-64) = 5.4.16-21.el7 You could try using --skip-broken to work around the problem Found 4 pre-existing rpmdb problem(s), 'yum check' output follows: php-5.4.16-21.el7.x86_64 has missing requires of php-common(x86-64) = ('0', '5.4.16', '21.el7') php-cli-5.4.16-21.el7.x86_64 has missing requires of php-common(x86-64) = ('0', '5.4.16', '21.el7') php-fpm-5.4.16-46.el7.x86_64 has missing requires of libcrypto.so.10(OPENSSL_1.0.2)(64bit) php-pdo-5.4.16-21.el7.x86_64 has missing requires of php-common(x86-64) = ('0', '5.4.16', '21.el7')

(yum install php-gd -y)rpm -vih +扩展组件 (yum install php-xml)rpm -vih +扩展组件
systemctl restart httpd 重启一下httpd,刷新页面就发现不会有报错了

Next step 检查系统环境设置,必须全部都为ok,才能继续;什么标红就装什么。 下一步 随便起一个名字 下一步

再下一步;

这里提示报错了,根据提示操作 点击下一步 登录之后的效果

还有一个问题就是直接输入ip地址的话访问的还是之前的Success界面,如果想直接输入ip就访问zabbix监控的话只需要修改httpd.conf文件即可

[root@zabbix zabbix]# whereis zabbix zabbix: /usr/lib/zabbix /etc/zabbix /usr/share/zabbix [root@zabbix zabbix]# whereis zabbix #省略一万个文件 [root@zabbix zabbix]# vim /etc/httpd/conf/httpd.conf #编辑配置文件

DocumentRoot "/usr/share/zabbix" #将DocumentRoot 之前的/var/www/html改为/usr/share/zabbix [root@zabbix zabbix]# systemctl restart httpd #最后重启apache服务即可


登陆之后更改中文语言 替换监控图像上系统默认的字体 #默认字体不支持中文,如果不替换,图像上会显示乱码 在Windows系统中的C:\Windows\Fonts目录中复制出一个中文字体文件,例如msyh.ttf 把字体文件msyh.ttf上传到zabbix站点根目录下fonts文件夹中 例如:/usr/local/nginx/html/zabbix/fonts 备份默认的字体文件:DejaVusSans.ttf-bak 修改msyh.ttf名称为DejaVusSans.ttf 在后台把默认语言修改为中文如图: 点击update即可,如图