搭建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配置ssl实现https的方法示例
Mar 31 Servers
nginx 反向代理之 proxy_pass的实现
Mar 31 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
Nginx 反向代理解决跨域问题多种情况分析
Jan 18 Servers
如何通过cmd 连接阿里云服务器
Apr 18 Servers
阿里云 Windows server 2019 配置FTP
Apr 28 Servers
tomcat下部署jenkins的方法
May 06 Servers
zabbix配置nginx监控的实现
May 25 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
git stash(储藏)的用法总结
Jun 25 Servers
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
Jun 25 Servers
windows系统安装配置nginx环境
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
实用函数4
2007/11/08 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
说说node中的可读流和可写流的区别
2018/06/01 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python生成随机数的方法
2014/01/14 Python
python实现猜数字小游戏
2020/03/24 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
小加工厂管理制度
2014/01/21 职场文书
Oracle中update和select 关联操作
2022/01/18 Oracle
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript
java版 联机五子棋游戏
2022/05/04 Java/Android