搭建zabbix监控以及邮件报警的超级详细教学


Posted in Servers onJuly 15, 2022

一、zabbix

1.1 简介

zabbix 是一款开源的功能强大的分布式监控系统,一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。

zabbix是由2部分构成,分别是zabbix server(监控端)与zabbix agent(被监控端)。

1.2 zabbix主要功能

  • CPU负荷
  • 内存使用
  • 磁盘使用
  • 网络状况
  • 端口监视
  • 日志监视

1.3 zabbix的主要特点

  • 安装与配置简单,学习成本低
  • 支持多语言(包括中文)
  • 免费开源
  • 自动发现服务器与网络设备
  • 分布式监视以及WEB集中管理功能
  • 可以无agent监视
  • 用户安全认证和柔软的授权方式
  • 通过WEB界面设置或查看监视结果
  • email等通知功能

1.4 zabbix组件

搭建zabbix监控以及邮件报警的超级详细教学

  • zabbix server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行
  • zabbix database:用户存储所有配置信息,以及存储由zabbix server收集到的数据
  • zabbix web:zabbix的interface接口,通常与Server运行在同一台主机上
  • zabbix agent:部署在被监控主机上,负责收集本地数据发往server端或proxy端
  • zabbix proxy:常用于分布监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端(通常大于500台主机才需要使用)

1.5 zabbix原理

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

二、基于LNMP环境搭建zabbix监控

zabbix server(监控端)

2.1 安装nginx

systemctl stop firewalld.service           #关闭防火墙及核心安全机制
setenforce 0

vim /etc/yum.repos.d/nginx.repo        #创建nginx的yum仓库

[nginx]
name=nginx
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

yum clean all
yum list

yum install -y nginx

systemctl start nginx
systemctl enable nginx
netstat -natp | grep 80

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

2.2 安装mariadb

yum -y install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service
netstat -natp | grep 3306

mysql_secure_installation
Enter current password for root (enter for none):			#回车
Set root password? [Y/n]									#Y
New password:												#123456
Re-enter new password:										#123456
Remove anonymous users?										#n
Disallow root login remotely?								#n
Remove test database and access to it?						#n
Reload privilege tables now?								#Y

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

登录验证

mysql -u root -p123456
exit

搭建zabbix监控以及邮件报警的超级详细教学

2.3 安装php

yum -y install epel-release.noarch
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm		#yum源的建立
yum install -y php72w php72w-devel php72w-fpm php72w-gd php72w-mbstring php72w-mysql			#安装环境依赖包
php -v					#查看版本

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

2.4 修改php-fpm配置文件

vim /etc/php-fpm.d/www.conf

user = nginx	     #第8行
group = nginx	     #第10行

搭建zabbix监控以及邮件报警的超级详细教学

2.5 修改nginx配置文件支持PHP并修改php配置文件

index  index.php index.html index.htm;		#第10行添加index.php
 
    location ~ \.php$ {                                                  #配置php模块,去掉注释
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

搭建zabbix监控以及邮件报警的超级详细教学

vim /etc/php.ini

short_open_tag = On    		 		 #202行修改,支持php短标签
expose_php  = Off 		 			 #359行修改,隐藏php版本

##为PHP兼容zabbix进行修改,优化配置要求
max_execution_time = 300				 #368行修改,执行时间
max_input_time = 300					 #378行修改,接收数据等待时向
memory_limit = 128M 					 #389行,每个脚本占用内存
post_max_size = 16M 					 #656行修改,POST数据大小
upload_max_filesize = 2M 				 #799行,下载文件大小
always_populate_raw_post_data = -1   	 #800行添加,可以用$HTTP_RAW_POST DATA
date.timezone = Asia/Shanghai 	         #877行取消注释并添加时区

开启服务

systemctl start php-fpm
systemctl enable php-fpm
netstat -natp | grep 9000

systemctl restart nginx

搭建zabbix监控以及邮件报警的超级详细教学

2.6 测试网页

vim /usr/share/nginx/html/info.php

<?php
     phpinfo();
?>

http://192.168.153.40/info.php

搭建zabbix监控以及邮件报警的超级详细教学

2.7 测试连接数据库

vim /usr/share/nginx/html/test.php

<?php
 $link=mysqli_connect('127.0.0.1','root','123456');
 if ($link) echo "数据库连接成功!";
 else echo "数据库连接失败~";
?>

http://192.168.153.40/test.php

搭建zabbix监控以及邮件报警的超级详细教学

2.8 建立数据库及用户并且授权

mysql -uroot -p123456

create database zabbix character set utf8 collate utf8_bin;

grant all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';

flush privileges;

exit

2.9 测试连接zabbix数据库

vim /usr/share/nginx/html/zabbix.php

<?php
  $link=mysqli_connect('127.0.0.1','zabbix' ,'admin123' );
  if ($link) echo "zabbix数据库连接成功 !";
  else echo "zabbix数据库连接失败 !";
?>

http://192.168.153.40/zabbix.php

搭建zabbix监控以及邮件报警的超级详细教学

注:在连接zabbix数据库失败的解决办法,删除用户名为空的主机即可

mysql -uroot -p123456

select user,host from mysql.user;
+--------+-----------+
| user   | host      |
+--------+-----------+
| zabbix | %         |
| root   | 127.0.0.1 |
| root   | ::1       |
|        | localhost |
| root   | localhost |
|        | wt        |
| root   | wt        |
+--------+-----------+
7 rows in set (0.00 sec)

drop user ''@localhost;
drop user ''@wt;
exit

刷新重连

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

2.10 zabbix server部署

2.10.1下载zabbix源并安装

rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

搭建zabbix监控以及邮件报警的超级详细教学

2.10.2 导入数据库脚本并验证

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -padmin123 zabbix

mysql -u zabbix -padmin123
use zabbix;
show tables;
exit

搭建zabbix监控以及邮件报警的超级详细教学

2.10.3 修改zabbix配置文件

vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log          #38行
LogFileSize=0        #49行
PidFile=/var/run/zabbix/zabbix_server.pid         #72行
SocketDir=/var/run/zabbix       #82行
DBHost=localhost                #91行,取消注释
DBName=zabbix                   #100行
DBUser=zabbix                   #116行
DBPassword=admin123             #124行,取消注释,zabbix数据库的密码
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log     #356行
Timeout=4                                          #473行
AlertScriptsPath=/usr/lib/zabbix/alertscripts      #516行
ExternalScripts=/usr/lib/zabbix/externalscripts    #527行
LogSlowQueries=3000                                #563行
vim /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Shanghai       #20行,修改时区

2.10.4授权

cp -r /usr/share/zabbix/ /usr/share/nginx/html/
chown -R zabbix:zabbix /etc/zabbix/
chown -R zabbix:zabbix /usr/share/nginx/
chown -R zabbix:zabbix /usr/lib/zabbix/
chmod -R 755 /etc/zabbix/web/
chmod -R 777 /var/lib/php/session/

2.10.5 开启服务

systemctl start zabbix-server
systemctl enable zabbix-server
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
netstat -ntap | grep 10051
systemctl restart php-fpm.service
systemctl restart nginx

http://192.168.153.40/zabbix/setup.php

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

2.10.6 浏览器访问测试

http://192.168.153.40/zabbix
账号:Admin    密码:zabbix

搭建zabbix监控以及邮件报警的超级详细教学

zabbix-agent端

①关闭防火墙和核心防护机制

systemctl stop firewalld
setenforce 0

②部署zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y zabbix-agent

搭建zabbix监控以及邮件报警的超级详细教学

③修改配置文件

PidFile=/var/run/zabbix/zabbix_agentd.pid   #13行
LogFile=/var/log/zabbix/zabbix_agentd.log   #32行
LogFileSize=0                               #43行
Server=192.168.153.40						#98行修改,指向监控服务器
ServerActive=192.168.153.40					#139行修改,指向监控服务器
Hostname=test                			    #150行,指定名称
Include=/etc/zabbix/zabbix_agentd.d/*.conf  #268行

④开启服务并检查端口

systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -natp | grep zabbix				#查看10050端口

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

监控验证(监控端)

如何切换成中文界面

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

添加被监控的主机

在zabbix图形页面——配置——主机——创建主机(定义主机名称、添加群组、填写被监控端主机IP地址)——模板——选定要监控的模板(httpd sshd服务)——选择——添加(添加连接模板)——添加(添加主机)

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

三、邮件报警

3.1 zabbix监控端配置

yum -y install mailx

vim /etc/mail.rc
'//末尾添加'
set from=邮箱
set smtp=smtp.qq.com
set smtp-auth-user=邮箱
set smtp-auth-password=邮箱授权码
set smtp-auth=login

测试下邮件是否可以发送

echo "hello tomorrow" | mail -s "test" 邮箱

搭建zabbix监控以及邮件报警的超级详细教学

编写邮件脚本

cd /usr/lib/zabbix/alertscripts
vim mailx.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

创建日志文件并修改权限并测试

touch /tmp/mailx.log
chown -R zabbix.zabbix  /tmp/mailx.log 
chmod +x mailx.sh 
chown -R zabbix.zabbix /usr/lib/zabbix/
sh mailx.sh 邮箱 zabbix "this is test"

搭建zabbix监控以及邮件报警的超级详细教学

3.2 web网页配置

3.2.1 添加报警媒介

管理 > 报警媒介类型 > 创建媒体类型

搭建zabbix监控以及邮件报警的超级详细教学

名称自定义,后面会用到
类型选择脚本
脚本名称是之前编辑的脚本名称
脚本的三个参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
搭建zabbix监控以及邮件报警的超级详细教学

3.2.2 添加用户

管理 > 用户 > 点击Admin > 报警媒介 > 添加
类型选择之前自定义的名称
收件人填自己邮箱
点击添加
点击更新
搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

3.2.3 创建动作

配置 > 动作 >删除默认的动作 > 创建动作 > 删除默认 > 创建动作
搭建zabbix监控以及邮件报警的超级详细教学
搭建zabbix监控以及邮件报警的超级详细教学
搭建zabbix监控以及邮件报警的超级详细教学
添加执行操作
搭建zabbix监控以及邮件报警的超级详细教学

默认标题   {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容   告警主机:{HOST.NAME}
          告警IP:{HOST.IP}
          告警时间:{EVENT.DATE}-{EVENT.TIME}
          告警等级:{TRIGGER.SEVERITY}
          告警信息:{TRIGGER.NAME}-{ITEM.VALUE}
          事件ID:{EVENT.ID}

搭建zabbix监控以及邮件报警的超级详细教学

添加恢复操作

除了消息内容的模板,其他和上一步基本一致

搭建zabbix监控以及邮件报警的超级详细教学

默认标题   {TRIGGER.STATUS}:{TRIGGER.NAME}

消息内容   恢复主机:{HOST.NAME}
          恢复IP:{HOST.IP}
          恢复时间:{EVENT.DATE}-{EVENT.TIME}
          恢复等级:{TRIGGER.SEVERITY}
          恢复信息:{TRIGGER.NAME}-{ITEM.VALUE}
          事件ID:{EVENT.ID}

搭建zabbix监控以及邮件报警的超级详细教学

最后再确认一下操作是不是都添加完成了,如果没完成是不会发送邮件的!!

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

3.2.4 测试

被监控端停止sshd服务

systemctl stop sshd

搭建zabbix监控以及邮件报警的超级详细教学

可以看到邮件已经发送过来了,并且仪表板的问题界面开始闪烁

搭建zabbix监控以及邮件报警的超级详细教学

重新开启服务后同样会有邮件发来

systemctl start sshd

搭建zabbix监控以及邮件报警的超级详细教学

搭建zabbix监控以及邮件报警的超级详细教学

总结 

到此这篇关于搭建zabbix监控以及邮件报警的文章就介绍到这了,更多相关搭建zabbix监控及邮件报警内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Servers 相关文章推荐
Nginx反向代理多个服务器的实现方法
Mar 31 Servers
Apache POI的基本使用详解
Nov 07 Servers
Linux安装apache服务器的配置过程
Nov 27 Servers
使用 Apache 反向代理的设置技巧
Jan 18 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
Nginx速查手册及常见问题
Apr 07 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
Win10 Anaconda安装python-pcl
Apr 29 Servers
Nginx的gzip相关介绍
May 11 Servers
netty 实现tomcat的示例代码
Jun 05 Servers
Apache POI操作批量导入MySQL数据库
Jun 21 Servers
Linux中各个目录的作用与内容
Jun 28 Servers
nginx七层负载均衡配置详解
Jul 15 #Servers
Linux安装Docker详细教程
Jul 07 #Servers
Docker安装MySql8并远程访问的实现
Jul 07 #Servers
Docker部署Mysql8的实现步骤
Jul 07 #Servers
教你nginx跳转配置的四种方式
kubernetes集群搭建Zabbix监控平台的详细过程
GPU服务器的多用户配置方法
Jul 07 #Servers
You might like
谈谈PHP语法(5)
2006/10/09 PHP
php邮件发送的两种方式
2020/04/28 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
Python selenium 三种等待方式解读
2016/09/15 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
自我鉴定范文
2013/11/10 职场文书
最新奶茶店创业计划书
2014/01/25 职场文书
班级活动策划书
2014/02/06 职场文书
财务人员担保书
2014/05/13 职场文书
南京青奥会口号
2014/06/12 职场文书
学校清明节活动总结
2014/07/04 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
寻找成龙观后感
2015/06/12 职场文书
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA