首页 > 代码库 > 1.Zabbix3.0部署

1.Zabbix3.0部署

相关服务软件版本环境

https://monitoringartist.github.io/zabbix-searcher/   zabbix 全局配置

https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters 如何自定义

Linuxcentos 6.7

nginx1.10.3

MySQL5.6.30

PHP5.6.35

apache2.4yum源安装

wget http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo

yum install httpd24-httpd -yhttpd24-httpd-devel httpd24-mod_ssl

 

一:用yum源安装

 #cd /etc/yum.repos.d

 cat << EOF >> /etc/yum.repos.d/nginx.repo

> [nginx]

> name=nginx repo

> baseurl=http://nginx.org/packages/centos/6/$basearch/

> gpgcheck=0

> enabled=1

> EOF

第三方yum

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

安装程序:【Nginx+php

          yum install nginx openssh-clients -y

          yum --enablerepo=remi,remi-php55 install php php-common

          yum --enablerepo=remi,remi-php55 install php-cli php-gd php-redis php-pear php-mysqlnd php-pdo php-pgsql php-pecl-mongo php-sqlite php-pecl-memcached php-pecl-memcache php-mbstrin php-xml php-soap php-mcrypt php-fpm

                                                    ------------------->国外比较好用

#rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

#rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

         php5.6.30版本】

         yum install --enablerepo=remi --enablerepo=remi-php56 php-fpm

         yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-bcmath php-gd --skip-broken

                                                    -------------------->国内比较好用

 

Php.ini配置

 

max_execution_time = 300

 

memory_limit = 128M

 

post_max_size = 16M

 

upload_max_filesize = 2M

 

max_input_time = 300

 

date.timezone = PRC

 

always_populate_raw_post_data = http://www.mamicode.com/-1

 

 

 

mysql5.6 社区版yum

 

[mysql56-community]

 

name=MySQL 5.6 Community Server

 

baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/5/$basearch/

 

enabled=1

 

gpgcheck=0

 

gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

 

比如要安装5.7版本的mysql,要确定5.6enabled=05.7enabled=1,一次保证只启用一个子仓库

 

[mysql57-community-dmr]

 

name=MySQL 5.7 Community Server Development Milestone Release

 

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/

 

enabled=1

 

gpgcheck=1

 

gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

二:测试php环境:(nginx+php整合)

  在网站存放路径下写index.php文件,文件内容

<?php

phpinfo();

?>

然后进行访问:http://192.168.0.160

技术分享

三:安装mysql5.6.35版本(社区版)

1. 查看是否已经默认安装mysql软件:

rpm -qa|grep mysql

如果存在的话,继续删除即可

      yum remove mysql * -y

2.安装mysql5.6

#sudo yum install mysql-community-server

   mysql-community-libs-compat-5.6.35-2.el5.x86_64

   mysql-community-devel-5.6.35-2.el5.x86_64

   mysql-community-libs-5.6.35-2.el5.x86_64

   mysql-5.6.35-2.el5.x86_64

   mysql-community-server-5.6.35-2.el5.x86_64

   mysql-community-client-5.6.35-2.el5.x86_64

   mysql-community-common-5.6.35-2.el5.x86_64

   #sudo service mysqld start

   #mysql –uroot –p

update mysql.user set password = password(‘xxxxxxxx‘) where user=‘root‘ and Host = ‘localhost‘;  (为root用户添加密码)

或者mysqladmin -uroot password  "zabbix"

 

  mysql> create database zabbix default charset utf8;

      Query OK, 1 row affected (0.00 sec)

  mysql> grant all privileges on zabbix.* to zabbix@‘localhost‘ identified by ‘zabbix‘;

     Query OK, 0 rows affected (0.03 sec)

     mysql> flush privileges;

     Query OK, 0 rows affected (0.00 sec)

  mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
5 rows in set (0.00 sec)

四:安装zabbix

1.下载:wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.0/zabbix-3.0.0.tar.gz

-rw-r--r--   1 root root  15407273 5月  21 2016 zabbix-3.0.0.tar.gz

[root@zabbix ~]# tar zxf zabbix-3.0.0.tar.gz && cd zabbix-3.0.0

2.编译zabbix

 

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2

 

   #make && make install

 

3.编译过程中如果出错

 

故障checking for mysql_config... no

 

configure: error: MySQL library not found

 

解决: yum install mysql-community-devel -y

 

 

 

4.创建用户:

 

[root@zabbix zabbix-3.0.0]#groupadd zabbix

 

[root@zabbix zabbix-3.0.0]#useradd zabbix -s /sbin/nologin -M -g

 

5.导入文件:

 

[root@zabbix zabbix-3.0.0]# mysql -uroot -pzabbix zabbix <

 

database/mysql/schema.sql

 

[root@zabbix zabbix-3.0.0]# mysql -uroot -pzabbix zabbix < database/mysql/images.sql

 

[root@zabbix zabbix-3.0.0]# mysql -uroot -pzabbix zabbix < database/mysql/data.sql

 

 

 

五:管理网站配置:

 

[root@zabbix zabbix-3.0.0]#mkdir /home/www/zabbix -p

 

[root@zabbix zabbix-3.0.0]#cp -rp frontends/php/* /home/www/zabbix

 

1.nginx虚拟主机配置

 

2./etc/nginx/conf.d下的default.conf文件备份,原文件删掉,在重新写一个zabbix.conf文件:文件配置内容如下

 

 [root@zabbix conf.d]#pwd

 

 /etc/nginx/conf.d

 

 [root@zabbix conf.d]#vim zabbix.conf

 

 server{

 

   listen       80;

 

   server_name  _;

 

  

 

   index index.php;

 

   root /home/www/zabbix;

 

  

 

   location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {

 

       expires 30d;

 

   }

 

  

 

   location ~* \.php$ {

 

       root /home/www/zabbix;

 

       fastcgi_pass   127.0.0.1:9000;

 

       fastcgi_index  index.php;

 

       fastcgi_param  SCRIPT_FILENAME /home/www/zabbix$fastcgi_script_name;

 

       include        fastcgi_params;

 

   }

 

}

 

3.修改zabbix配置文件:

 

  进入/usr/local/zabbix/etc

 

[root@zabbix etc]#ll

 

-rw-r--r-- 1 root root 10241 3月  17 03:20 zabbix_agentd.conf

 

drwxr-xr-x 2 root root  4096 3月  16 23:52 zabbix_agentd.conf.d

 

-rw-r--r-- 1 root root 15760 3月  16 23:52 zabbix_proxy.conf

 

drwxr-xr-x 2 root root  4096 3月  16 23:52 zabbix_proxy.conf.d

 

-rw-r--r-- 1 root root 14680 3月  17 00:52 zabbix_server.conf

 

drwxr-xr-x 2 root root  4096 3月  16 23:52 zabbix_server.conf.d

 

修改zabbix_server.conf的配置文件,配置如下

 

   DBHost=localhost

 

   DBName=zabbix

 

   DBUser=zabbix

 

   DBPassword=zabbix

 

再修改zabbix_agentd.conf

 

  Server=192.168.0.160

 

  ServerActive=192.168.0.160

 

  Hostname=Zabbix server   (根据自己修改)

 

4.启动所有服务:

 

   Service nginx restart

 

   Service php-fpm restart

 

   Service mysql restart

 

   /usr/local/zabbix/sbin/zabbix_server

 

   /usr/local/zabbix/sbin/zabbix_agentd

六:访问主页:http//192.168.0.160

技术分享

 

 注:如果点击下一步没有反应:就执行setfacl -R -m u:nginx:rwx /var/lib/php

技术分享

如果出现以下情况,请安装php的依赖包

PHP bcmath extension missing (PHP configuration parameter --enable-bcmath).

PHP option "always_populate_raw_post_data" must be set to "-1"

PHP gd extension missing (PHP configuration parameter --with-gd).

PHP gd PNG image support missing.

PHP gd JPEG image support missing.

PHP gd FreeType support missing

技术分享

技术分享

技术分享

技术分享

技术分享

需要下载文件,并上传到指定的服务器目录中.

技术分享

技术分享

技术分享

修改界面为中文界面

默认登录界面为英文:

修改以下配置,并重启服务即可;

vim /home/www/zabbix/include/locales.inc.php
      #‘zh_CN‘ => [‘name‘ => _(‘Chinese (zh_CN)‘), ‘display‘ => false],
      ‘zh_CN‘ => [‘name‘ => _(‘Chinese (zh_CN)‘), ‘display‘ => true],

技术分享

接下来的配置就根据需求开发了

Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱。

具体操作:(作为参考)

 

以下操作在Zabbix监控服务端进行

 

下载sendemail软件

 

然后安装那两个依赖包,命令是

 

yum install perl-Net-SSLeayperl-IO-Socket-SSL -y

 

解压软件,然后将复制sendemail到/usr/local/bin/目录下,并加上可执行权限,然后修改用户和群组。

 

[root@mysqla ~]# tar zxfsendEmail-v1.56.tar.gz

 

[root@mysqla ~]# cdsendEmail-v1.56/

 

[root@mysqlasendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail

 

[root@mysqlasendEmail-v1.56]# chown zabbix:zabbix /usr/local/bin/sendEmail

 

[root@mysqlasendEmail-v1.56]# ll /usr/local/bin/sendEmail

 

-rwxr-xr-x. 1 zabbix zabbix80213 Nov 21 21:26 /usr/local/bin/sendEmail

 

执行#/usr/local/bin/sendEmail -h查看sendEmail的帮助

 

#/usr/local/bin/sendEmail -fbpcyh1@126.com -t bpcyh1@126.com -s smtp.126.com -u "hello" -omessage-content-type=html -o message-charset=utf8 -xu bpcyh1@126.com -xp 123abc-m "abcfdd"

 

命令主要选项说明:
/usr/local/bin/sendEmail                    #命令主程序
-f  from@126.com                         #发件人邮箱
-t to@126.com                             #收件人邮箱
-s smtp.126.com                          #发件人邮箱的smtp服务器
-u "我是邮件主题"                             #邮件的标题
-o message-content-type=html          #邮件内容的格式,html表示它是html格式
-o message-charset=utf8                  #邮件内容编码
-xu from@126.com                      #发件人邮箱的用户名
-xp WEE78@12l$                            #发件人邮箱密码
-m "我是邮件内容"                            #邮件的具体内容

 

进入/usr/local/zabbix/share/zabbix/alertscripts/目录

 

然后在这个目录下创建报警脚本sendmail.sh

 

[root@mysqla alertscripts]#vi mail.sh

 

下面是脚本内容(涂颜色部分是你的邮箱和密码,-f和-xu参数后面跟邮箱,-xp后面跟授权码)

 

#!/bin/bash

 

to=$1

 

subject=$2

 

body=$3

 

/usr/local/bin/sendEmail-o tls=auto -f bpcyh1@126.com -t "$to" -s smtp.126.com -u"$subject" -o message-content-type=html -o message-charset=utf8 -xubpcyh1@126.com -xp 123abc -m "$body" 

 

[root@mysqla alertscripts]#chmod +x mail.sh

 

执行脚本测试发邮件

 

[root@mysqla alertscripts]#./mail.sh bpcyh1@126.com test 123

 

*******************************************************************

 

 Using the defaultof SSL_verify_mode of SSL_VERIFY_NONE for client

 

is deprecated! Please set SSL_verify_mode toSSL_VERIFY_PEER

 

together with SSL_ca_file|SSL_ca_path for verification.

 

 If you reallydon‘t want to verify the certificate and keep the

 

connection open to Man-In-The-Middle attacks please set

 

SSL_verify_mode explicitly to SSL_VERIFY_NONE in yourapplication.

 

*******************************************************************

 

at /usr/local/bin/sendEmail line 1906.

 

invalid SSL_version specified at/usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415

 

注:进行发送邮件测试时,出现了第一个报错

 

原因是sendemail软件和perl5里面的ssl版本不兼容导致的,通过修改sendemail里面的内容可以解决这个问题。

 

解决方法:

 

sendemail中1906行的内容,从

 

if (!IO::Socket::SSL->start_SSL($SERVER, SSL_version => ‘SSLv3 TLSv1‘)) {

 

修改为

 

if (! IO::Socket::SSL->start_SSL($SERVER)){

 

即不指定SSL的版本,让程序来自己选择

 

不管你使用的是163/126邮箱还是qq邮箱,你都必须开通pop3服务,而且126/qq邮箱还要求使用第三方客户端发送邮件是必须使用授权码登录,使用账号密码验证时,会出现下面图片中的错误。

 

sendEmail[5102]: ERROR =>ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.

 

至于邮箱的授权码,自己登录126邮箱去设置就好。

 

经过上面两个问题的处理后就可以正常发送邮件如下所示显示成功提示

 

[root@mysqla alertscripts]#./mail.sh bpcyh1@126.com test 123

 

Nov 21 22:50:47 mysqlasendEmail[5195]: Email was sent successfully!

 

zabbix web端配置

 

上面的邮件脚本配置好后,就要在web端添加报警媒介,在web页面的管理,报警媒介类型页面,点击右边的创建媒体类型

 

 

 

进入创建页面,然后输入名称“邮件报警脚本”,类型选择脚本,名称选择mail.sh,点击添加按钮,添加三个脚本参数,分别是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分别对于mail.sh中的to、subject和body。添加完成后点下面的添加按钮,我们的报警媒介就创建完成了

技术分享

技术分享

创建好报警媒介后,就需要将报警媒介关联到我们的用户。点击管理,用户,然后选择我们的用户admin也可新建一个用户,点击用户名就进入到用户配置界面。点击报警媒介,然后点添加,选择我们上一步创建的邮件报警脚本,输入收件人,选择报警时间和类型,然后点击添加,就将创建好的报警媒介关联到我们的用户上面了。

技术分享

技术分享

现在需要做的是,创建一个触发动作,即系统出现故障时,触发这个动作,然后给我们的邮箱发送报警邮件。点击配置,选择动作,然后点击右边的创建动作。

在动作这一页名称中写入我们定义的动作名以及触发条件

技术分享

设置“操作”

技术分享

技术分享

步骤是1-3,也即是从1开始到3结束。一旦故障发生,就是执行Email.sh脚本发生报警邮件给zabbix用户。 
假如故障持续了1个小时,它也只发送3次,第1-3次(即前3次)邮箱发送给zabbix用户,时间间隔为0秒。
如果改成1-0,0是表示不限制.无限发送  

设置“恢复操作”

技术分享

添加好以后就可以看到我们添加的动作名,以及该动作已启用的状态

技术分享

报警测试

192.16831.250服务器的zabbix_agent进程关闭。

发现可以正常收到故障报警邮件

技术分享

最后,点击”报表“->”动作日志“,可以看到触发动作的次数(右边还看查看到邮件发送状态“已发送”)

技术分享

 

1.Zabbix3.0部署