:Zabbix部署

实验环境:

CentOS 7-2:192.168.18.147(监测端:部署安装zabbix)

CentOS 7-3:192.168.18.128(被监测端)

监测端操作:

[root@cacti ~]# systemctl stop firewalld.service        #关闭防火墙功能
[root@cacti ~]# systemctl disable firewalld.service     #开机禁用防火墙功能
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@cacti ~]# setenforce 0                            #关闭增强型安全功能

`安装LAMP架构`
[root@cacti ~]# yum install -y \
httpd \
mariadb-server mariadb \
php \
php-mysql \
php-gd \
libjpeg* \
php-ldap \
php-odbc \
php-pear \
php-xml \
php-xmlrpc \
php-mhash

`编辑apache配置文件`
[root@cacti ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName www.yun.com:80                        #第95行,删除注释,域名自定义
164     DirectoryIndex index.html index.php         #164行,添加首页支持类类型index.php
#修改完成后按Esc退出插入模式,输入:wq保存退出

`修改时区为中国`
[root@cacti ~]# vim /etc/php.ini
878 date.timezone = PRC     #878行,把前面模板的;号删除,后面添加中国时区PRC
#修改完成后按Esc退出插入模式,输入:wq保存退出

[root@cacti ~]# systemctl start httpd.service       #启动apache服务
[root@cacti ~]# systemctl start mariadb.service     #启动mariadb服务
[root@cacti ~]# netstat -ntap | egrep '(3306|80)'   #使用egrep命令同时查看3306和80端口
tcp        0      0 0.0.0.0:3306            0.0.0.0:*            LISTEN      4410/mysql   
tcp6       0      0 :::80                   :::*                 LISTEN      4131/httpd    
`初始化数据库配置`
[root@cacti ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):   #此处直接回车
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y      #设置密码
New password:       #abc123
Re-enter new password:      #确认输入:abc123
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] n     #是否删除匿名用户,选择不删除
 ... skipping.
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y   #是否远程连接
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] n      #是否删除测试数据库
 ... skipping.
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y    #是否重新加载
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

#验证登录数据库
[root@cacti ~]# mysql -u root -p
Enter password:     #输入密码abc123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 5.5.64-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

`创建zabbix数据库,并且设置为utf8形式,把里面的字符串转换为二进制`
MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
`提升用户`
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| zabbix             |
+--------------------+
5 rows in set (0.00 sec)
#此时有zabbix数据库,需要创建管理里这个数据库的用户
MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected (0.01 sec)    
#把所有数据库和所有表都交给zabbix进行管理,并且设置密码为admin123

MariaDB [(none)]> flush privileges;     #刷新
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> quit      #退出数据库
Bye

`测试php基本信息`
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim index.php
<?php
  phpinfo();
?>
此时在宿主机中输入:192.168.18.147,查看是否可以访问php页面:

测试是否能够连接数据库:
[root@localhost html]# vim index.php
#先按3dd删除原有内容,再插入以下内容
<?php
$link=mysql_connect('192.168.18.147','zabbix','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>
此时在宿主机中刷新之前的页面:192.168.18.147,如果可以访问mysql数据库则返回Success提示,如果不能则返回Fail提示:

解决问题:

如果出现Fail报错一般为本地无法登录得问题,可以使用以下方法解决
[root@cacti html]# mysql -u zabbix -p
Enter password:     #此时输入admin123无法登录数据库,说明有用户占用
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)

`先使用root用户登录数据库`
[root@cacti html]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 5.5.64-MariaDB MariaDB Server

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

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

MariaDB [(none)]> select user,host from mysql.user;
+--------+-----------+
| user   | host      |
+--------+-----------+
| zabbix | %         |
| root   | 127.0.0.1 |
| root   | ::1       |
|        | cacti     |
|        | localhost |
| root   | localhost |
+--------+-----------+
6 rows in set (0.00 sec)

`以下操作删除空用户`
MariaDB [(none)]> drop user ''@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> drop user ''@cacti;
Query OK, 0 rows affected (0.00 sec)

`此时空用户被删除`
MariaDB [(none)]> select user,host from mysql.user;
+--------+-----------+
| user   | host      |
+--------+-----------+
| zabbix | %         |
| root   | 127.0.0.1 |
| root   | ::1       |
| root   | localhost |
+--------+-----------+
4 rows in set (0.00 sec)

MariaDB [(none)]> quit
Bye

`此时再次刷新页面就会显示Success!!成功登录`

部署Zabbix Server

[root@cacti html]# yum install php-bcmath php-mbstring -y
`安装zabbix源`
[root@cacti html]# rpm -ivh http://www.ib911.com/668/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
获取http://www.zfb.611ib.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.13QGZK: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zabbix-release-3.5-1.el7         ################################# [100%]

`查看源`
[root@cacti html]# cd /etc/yum.repos.d/
[root@cacti yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  zabbix.repo
[root@cacti yum.repos.d]# cat zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://www.ib911.com/zabbix/3.5/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://www.uyv.378ib.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

[root@cacti yum.repos.d]# yum install zabbix-server-mysql zabbix-web-mysql -y
......此处省略多行
已安装:
  zabbix-server-mysql.x86_64 0:4.0.0-1.1rc3.el7    zabbix-web-mysql.noarch 0:4.0.0-1.1rc3.el7

作为依赖被安装:
  OpenIPMI.x86_64 0:2.0.27-1.el7                   OpenIPMI-libs.x86_64 0:2.0.27-1.el7
  OpenIPMI-modalias.x86_64 0:2.0.27-1.el7          fping.x86_64 0:3.10-1.el7
  iksemel.x86_64 0:1.4-2.el7.centos                zabbix-web.noarch 0:4.0.0-1.1rc3.el7

`生成数据库文件`
[root@cacti yum.repos.d]# zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz | mysql -u zabbix -p  zabbix
Enter password:     #输入密码admin123

[root@cacti yum.repos.d]# grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix
117:DBUser=zabbix
357:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
475:Timeout=4
518:AlertScriptsPath=/usr/lib/zabbix/alertscripts
529:ExternalScripts=/usr/lib/zabbix/externalscripts
565:LogSlowQueries=3000
#是配置文件中缺少的就是密码,其它得系统已自动配置

[root@cacti yum.repos.d]# vim /etc/zabbix/zabbix_server.conf
125 DBPassword=admin123     #125行删除注释,添加密码admin123在=号后面
#修改完成后按Esc退出插入模式,输入:wq保存退出

`修改时区`
[root@cacti yum.repos.d]# vim /etc/httpd/conf.d/zabbix.conf
20         php_value date.timezone Asia/Shanghai        #20行删除注释,失去改为Asia/Shanghai
#修改完成后按Esc退出插入模式,输入:wq保存退出

`修正图表中文乱码`
[root@cacti yum.repos.d]# vim /usr/share/zabbix/include/defines.inc.php
#输入以下内容进行全局字体替换为kaiti
:%s /graphfont/kaiti/g
#修改完成后按Esc退出插入模式,输入:wq保存退出

`复制STKAITI.TTF文件到字体目录下`
[root@cacti yum.repos.d]# mkdir /aaa        #创建挂载目录
[root@cacti yum.repos.d]# mount.cifs //192.168.0.105/rpm /aaa       #进行远程挂载
Password for root@//192.168.0.105/rpm:
[root@cacti yum.repos.d]# cd /aaa/zabbix/
[root@cacti zabbix]# ls
php-bcmath-5.4.16-42.el7.x86_64.rpm    STKAITI.TTF
php-mbstring-5.4.16-42.el7.x86_64.rpm  zabbix.conf.php
[root@cacti zabbix]# cp STKAITI.TTF /usr/share/zabbix/fonts/

`启动服务查看端口开启情况`
[root@cacti zabbix]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@cacti zabbix]# systemctl start zabbix-server
[root@cacti zabbix]# netstat -ntap | grep zabbix        #监听端口为10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*        LISTEN    6735/zabbix_server
tcp6       0      0 :::10051                :::*             LISTEN    6735/zabbix_server
[root@cacti zabbix]# systemctl restart httpd.service    #重启httpd服务,用于验证登录zabbix

验证:登录操作,安装zabbix

第一步:在宿主机地址栏中输入:http://www.yhu.7002200.com/zabbix/可进入以下页面,按Next step进入下一步

第二步:确认检查全部为OK之后,按Next step进入下一步

第三步:数据库设置,输入端口号3306,填写密码admin123,按Next step进入下一步

第四步:填写zabbix服务名称,此处填写Zabbix(可自行定义),按Next step进入下一步

第五步:可以显示之前所有配置的内容,直接按Next step进入下一步

第六步:进入页面后直接按Finish结束,进入登陆界面,输入默认账户Admin,默认密码zabbix,点击登录

此时就可以进入到zabbix的监控界面了:

可点击右上角人物头像,在Language语言栏选择Chinese(zh_CN)简体中文,点击Update更新

以上就是监测端的所有操作!


被监测端操作:

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0

`安装yum源`
[root@localhost ~]# rpm -ivh http://www.8442277.com/167/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
获取http://www.ib911.com/263/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.elS5cl: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zabbix-release-3.5-1.el7         ################################# [100%]

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  zabbix.repo
[root@localhost yum.repos.d]# yum install zabbix-agent -y

`修改配置文件`
[root@localhost yum.repos.d]# grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=127.0.0.1             #此处需要修改为监控端IP
139:ServerActive=127.0.0.1      #此处需要修改为监控端IP
150:Hostname=Zabbix server
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf

[root@localhost yum.repos.d]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=192.168.18.147            #98行,:指向监控服务器IP
139 ServerActive=192.168.18.147     #139行,指向监控服务器IP
150 Hostname=zhou                   #主机名,可自行定义
#修改完成后按Esc退出插入模式,输入:wq保存退出

`启动服务`
[root@localhost yum.repos.d]# systemctl enable zabbix-agent.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@localhost yum.repos.d]# systemctl restart zabbix-agent.service
[root@localhost yum.repos.d]# netstat -ntap | grep zabbix       #监听端口为10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*         LISTEN   5425/zabbix_agentd
tcp6       0      0 :::10050                :::*              LISTEN   5425/zabbix_agentd

此时不会自动识别被监控端,需要做以下操作:

第一步:找到配置下的主机选项,点击创建主机

第二步:在主机配置界面填入相应内容,然后点击模板

第三步:在模板中选择HTTP和SSH的模板链接,点击提示器中的添加,然后再点击蓝色的添加图标

此时回到开始的界面就会显示新添加的监控项

以上就实现了服务器监控被监控端,假如被监控端遇到问题,就会触发报警,最终会以邮件形式提供(需要添加邮件发送服务)


Zabbix监测和报警机制

监控端安装邮件报警功能的操作
[root@cacti zabbix]# yum install mailx -y
[root@cacti zabbix]# vim /etc/mail.rc
#在末行下插入以下内容
set from=邮箱地址   #例如19919919911@163.com
set smtp=smtp.163.com
set smtp-auth-user=邮箱地址
set smtp-auth-password=邮箱密码
set smtp-auth=login
#修改完成后按Esc退出插入模式,输入:wq保存退出

`尝试发送测试邮件`
[root@cacti zabbix]# echo "hello world" | mail -s "testmail" 邮箱地址
此时邮箱收到测试邮件:

编写发邮件脚本:

[root@cacti zabbix]# cd /usr/lib/zabbix/alertscripts
[root@cacti alertscripts]# vim mail.sh
#!/bin/bash
#send mail

messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
#修改完成后按Esc退出插入模式,输入:wq保存退出

[root@cacti alertscripts]# mv mail.sh mailx.sh

`在tmp目录下创建mailx的日志文件`
[root@cacti alertscripts]# touch /tmp/mailx.log

`赋予权限`
[root@cacti alertscripts]# chown -R zabbix.zabbix  /tmp/mailx.log
[root@cacti alertscripts]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
[root@cacti alertscripts]# chown -R zabbix.zabbix /usr/lib/zabbix/

`验证过程`
[root@cacti alertscripts]# ./mailx.sh 邮箱地址 "yun" "hello"
#其中邮箱地址为$1,yun为$2主题,hello为$3内容

此时执行完脚本,邮箱中就可以收到相对应的邮件了!

接下来进入Web界面进行设置:

第一步:在上方选择管理,找到其中的报警媒介类型,再点击页面右上角的创建媒体类型,在界面中输入相关信息

第二步:选项中会显示3次探测服务,如果宕掉就会触发报警,最后点击下方的蓝色添加图标,就可以生成新的报警类型了


接下来我们需要指定用户

第一步:找到配置中的用户界面,点击Admin用户

第二步:在用户的报警媒介中点击添加,输入相对应的媒介信息,最后点击添加

第三步:添加媒介之后一定不要忘记点击更新

在动作中删除原有模板,在进行重新定义,点击右上角的创建动作

第一步:在动作界面中输入名称,生成新的触发条件

第二步:在操作中做以下操作,下方点击新的,做添加操作,最后点击跟新

此时新的操作生成!

第三步:恢复操作中做以下填写

此时新的操作生成!

第四步:点击蓝色图标添加,此时就会进行持续性的监控了

查看被监控端SSH远程连接服务状态

[root@localhost yum.repos.d]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2019-11-25 11:00:11 CST; 2 months 7 days ago
#此时显示为running运行状态

`停止此服务`
[root@localhost yum.repos.d]# systemctl stop sshd

此时我们看监控界面会不会跳出提示

经过等待几分钟之后监控界面会自动跳出SSH服务down的提示,此时邮箱也会收到邮件

`启动sshd服务`
[root@localhost yum.repos.d]# systemctl start sshd
此时几分钟过后会自动监测到服务成功开启,报警已解决,同时邮箱也会收到服务恢复的邮件

以上就是Zabbix监控的监测和报警机制