搭建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配置https原理及实现过程详解
Mar 31 Servers
图文详解nginx日志切割的实现
Jan 18 Servers
Docker下安装Oracle19c
Apr 13 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
排查Tomcat进程假死的问题
May 06 Servers
在容器中使用nginx搭建上传下载服务器
May 11 Servers
详解Nginx的超时keeplive_timeout配置步骤
May 25 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
Linux在两个服务器直接传文件的操作方法
Aug 05 Servers
windows系统搭建WEB服务器详细教程
Aug 05 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
Sep 23 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 ftp文件上传函数(基础版)
2010/06/03 PHP
drupal 代码实现URL重写
2011/05/04 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
python uuid模块使用实例
2015/04/08 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
艺术系应届生的自我评价
2013/10/19 职场文书
新年寄语大全
2014/04/12 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android