在LAMP架构中部署zabbix监控系统及邮件报警机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在LAMP架构中部署zabbix监控系统及邮件报警机制相关的知识,希望对你有一定的参考价值。

初步了解zabbix:

Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。被监控对象只要支持SNMP协议或者运行zabbix_agents代理程序即可。
agent端:主机通过安装agent方式采集数据。
server端:通过收集agent发送的数据,写入数据库(mysql,ORACLE等),再通过php+apache在web前端展示.

SNMP:

SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。

zabbix工作原理:

Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。

zabbix重要的五个组件:

1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;
4、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
5、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;

zabbix基本组件拓扑:
技术分享图片

下面我对如何部署zabbix进行详细配置
实验环境:
技术分享图片

STKAITI字体文件链接:https://pan.baidu.com/s/1EC_jdOhRGjDJewAKueaTUg
提取码:zmv4
一、部署LAMP架构
下载LAMP所需安装包

[[email protected] ~]# yum install httpd mariadb mariadb-server php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash -y

配置Apache主配置文件

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.yun.com:80 #修改域名
DirectoryIndex index.html index.php #让Apache支持PHP

为了让zabbix连接互联网,设置中国时区

[[email protected] ~]# vim /etc/php.ini
date.timezone = PRC

开启httpd服务和mysql

[[email protected] ~]# systemctl start httpd.service 
[[email protected] ~]# systemctl start mariadb.service 
[[email protected] ~]# netstat -ntap | egrep ‘80|3306‘            #查看两个服务的端口
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      38513/mysqld        
tcp6       0      0 :::80                   :::*                    LISTEN      38242/httpd         

重新配置mariadb数据库的参数

[[email protected] ~]# mysql_secure_installation 
Set root password? [Y/n] y         #是否设置密码
Remove anonymous users? [Y/n] n      #是否删除默认用户
Disallow root login remotely? [Y/n] n      #是否禁止root远程登录
Remove test database and access to it? [Y/n] n        #是否删除测试数据库
Reload privilege tables now? [Y/n] y       #是否对数据库进行初始化配置

创建zabbix数据库

[[email protected] ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;    #创建一个zabbix数据库
MariaDB [(none)]> grant all on zabbix.* to ‘zabbix‘@‘%‘ identified by ‘123123‘;     #为zabbix数据库创建管理用户
MariaDB [(none)]> flush privileges;

创建PHP测试首页

[[email protected] ~]# vim /var/www/html/index.php    
<?php
  phpinfo();
?>

技术分享图片

编写测试脚本,测试PHP能否连接数据库

<?php
$link=mysql_connect(‘192.168.199.129‘,‘zabbix‘,‘123123‘);
if($link) echo "<h1>success</h1>";
else echo "fail";
mysql_close();
?>

技术分享图片

在使用zabbix用户进行登录数据库时有时会出现登录失败的现象,这是因为里面有空用户占用导致本地用户无法登录,所以需要删除空用户

[[email protected] ~]# mysql -u zabbix -p         #登录失败
Enter password: 
ERROR 1045 (28000): Access denied for user ‘zabbix‘@‘localhost‘ (using password: YES)

[[email protected] ~]# mysql -u root -p
MariaDB [(none)]> select user,host from mysql.user;   #有空用户占用导致本地用户无法登陆
+--------+-----------------------+
| user   | host                  |
+--------+-----------------------+
| zabbix | %                     |
| root   | 127.0.0.1             |
| root   | ::1                   |
|        | localhost             |
| root   | localhost             |
|        | localhost.localdomain |
| root   | localhost.localdomain |
+--------+-----------------------+
7 rows in set (0.00 sec)

MariaDB [(none)]> drop user ‘‘@‘localhost‘;         #删除空用户
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> drop user ‘‘@‘localhost.localdomain‘;       #删除空用户
Query OK, 0 rows affected (0.00 sec)

[[email protected] ~]# mysql -u zabbix -p      #再次登录就可以了
MariaDB [(none)]> 

到此为止,LAMP架构就部署完了

二、部署zabbix server

[[email protected] ~]# yum install php-bcmath php-mbstring -y       #下载两个PHP依赖包
[[email protected]~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm   #下载zabbix yum源,安装完成后会自动产生repo文件
[[email protected] ~]# yum install zabbix-server-mysql zabbix-web-mysql -y    #安装zabbix软件包

修改zabbix配置文件

[[email protected] ~]# 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
125:DBPassword=123123     #密码改为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
[[email protected] ~]# vim /etc/httpd/conf.d/zabbix.conf    #修改时区
php_value date.timezone Asia/Shanghai

[[email protected] ~]# vim /usr/share/zabbix/include/defines.inc.php    #修正图表中文乱码
:%s /graphfont/kaiti/g     #将配置文件中的graphfont替换为kaiti
[[email protected] ~]# cp STKAITI.TTF /usr/share/zabbix/fonts/    #从微软系统下复制相应的字体文件到/usr/share/zabbix/fonts/

开启zabbix服务端

[roo[email protected] ~]# systemctl start zabbix-server.service    
[[email protected] ~]# systemctl enable zabbix-server.service 
[[email protected] ~]# netstat -ntap | grep 10051       #查看端口
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      40703/zabbix_server 
tcp6       0      0 :::10051                :::*                    LISTEN      40703/zabbix_server 

[[email protected] ~]# systemctl restart httpd.service     #重启Apache服务

http://192.168.199.129/zabbix     #在浏览器上登陆zabbix页面

首先看见的是zabbix的版本:
技术分享图片
这里所有的选项都为OK表示配置是没问题的:
技术分享图片
密码为zabbix的登陆密码:
技术分享图片
名字填写zabbix:
技术分享图片
技术分享图片
默认的用户名和密码为Admin和zabbix:
技术分享图片
登陆完成后便会到zabbix的监控页面:
技术分享图片
点击右上角头像可以选择语言,这里我选择中文:
技术分享图片

三、安装被监控端

[[email protected] ~]# systemctl stop firewalld.service     #关闭防火墙
[[email protected] ~]# setenforce 0
[[email protected]~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm   #下载yum源
[[email protected] ~]# yum install zabbix-agent -y   #被监控端需要装agent包,如果想要监控本机器,也可以在监控服务器上进行安装

更改配置文件

[[email protected] ~]# 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=192.168.199.129     #将地址指向服务器端
139:ServerActive=192.168.199.129     #将地址指向服务器端
150:Hostname=test     #名字可自行定义
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf

开启服务

[[email protected] ~]# systemctl start zabbix-agent.service      
[[email protected] ~]# 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.
[[email protected] ~]# netstat -ntap | grep zabbix     #查看端口
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      40351/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      40351/zabbix_agentd 

在服务器上配置完了就可以到zabbix监控页面进行配置
首先在监控页面中添加被监控服务器
技术分享图片
配置主机项基本信息
技术分享图片
配置模板选项,添加想要监控的模块
技术分享图片
查看添加好的主机信息
技术分享图片
回到主界面,点击刷新,过一会就回出现监控信息
技术分享图片

四、配置邮件报警功能-----在监控服务器上配置

[[email protected] ~]# yum install mailx -y       #下载邮箱服务
[[email protected] ~]# vim /etc/mail.rc        #在文件末尾添加如下配置
set from=邮箱地址
set smtp=smtp.qq.com
set smtp-auth-user=邮箱地址
set smtp-auth-password=**********     #如果填写的是qq邮箱,密码为qq邮箱的SMTP密码
set smtp-auth=login

技术分享图片

[[email protected] ~]# systemctl restart postfix.service    #重新启动邮箱服务

[[email protected] ~]# echo "hello world" | mail -s "testmail" 邮箱地址   #发送一个测试邮件

可以看到我在QQ邮箱中收到了一封邮件
技术分享图片

[[email protected] ~]# vim /usr/lib/zabbix/alertscripts/mail.sh    #写一个发邮件的脚本,脚本路径一定要写对
#!/bin/bash
#send mail

messages=`echo $3 | tr ‘
‘ ‘
‘`
subject=`echo $2 | tr ‘
‘ ‘
‘`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mail.log 2>&1
[[email protected] ~]# chmod +x /usr/lib/zabbix/alertscripts/mail.sh     #给脚本执行权限
[[email protected] ~]# touch /tmp/mail.log     #创建邮箱日志文件
[[email protected] ~]# chown -R zabbix.zabbix /tmp/mail.log    #将权限给zabbix用户
[[email protected] ~]# chown -R zabbix.zabbix /usr/lib/zabbix/

再次发送一封测试邮件使用脚本执行

[[email protected] ~]# cd /usr/lib/zabbix/alertscripts/
[[email protected] alertscripts]# ./mail.sh 邮箱地址 "yun" "hahahahaha"        #发送格式为“地址”“标题”“内容”

技术分享图片

六、配置zabbix邮件报警机制
1 选择报警媒介类型
技术分享图片
技术分享图片
2 选择管理用户
技术分享图片
技术分享图片
技术分享图片
3 在动作配置项中定义报警邮件的发送形式
技术分享图片
技术分享图片
技术分享图片
技术分享图片
4 配置恢复操作后邮件的发送形式
技术分享图片
技术分享图片

七、测试,如果我关闭受监控的服务来模拟服务故障,zabbix一个会发送一封邮件提醒我,当我再次打开这个服务时表示这个服务已经被修复,zabbix一个也会发一封恢复邮件。

[[email protected] ~]# systemctl stop sshd.service #关闭被监控端的ssh服务

技术分享图片
接着便会收到邮件信息了:
技术分享图片

[[email protected] ~]# systemctl start sshd.service #我再次开启被监控端的SSH服务

技术分享图片
到此为止zabbix监控系统就搭建完成了。

以上是关于在LAMP架构中部署zabbix监控系统及邮件报警机制的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix安装配置及邮件报警

Zabbix安装配置及邮件报警

zabbix邮件报警及自定义脚本实战

Security基础:部署Zabbix监控平台配置及使用Zabbix监控系统自定义Zabbix监控项目实现Zabbix报警功能

Zabbix监控客户端及实现邮件微信报警

Zabbix部署监测及邮件报警机制(实战!)