搭建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服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Nginx域名转发使用场景代码实例
Mar 31 Servers
Nginx已编译的nginx-添加新模块
Apr 01 Servers
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
Jul 07 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
Nginx工作模式及代理配置的使用细节
Mar 21 Servers
Windows Server 2019 域控制器安装图文教程
Apr 28 Servers
Nginx本地配置SSL访问的实例教程
May 30 Servers
vscode内网访问服务器的方法
Jun 28 Servers
教你nginx跳转配置的四种方式
Jul 07 Servers
Docker安装MySql8并远程访问的实现
Jul 07 Servers
zabbix如何添加监控主机和自定义监控项
Aug 14 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模拟SQL Server的两个日期处理函数
2006/10/09 PHP
php session 检测和注销
2009/03/16 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
jQuery之排序组件的深入解析
2013/06/19 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
javascript回调函数详解
2018/02/06 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
js动态引入的四种方法
2018/05/05 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
迎新晚会主持词
2014/03/24 职场文书
本科毕业生求职信
2014/06/15 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
写给医生的感谢信
2015/01/22 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
TypeScript 内置高级类型编程示例
2022/09/23 Javascript
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers