搭建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 + consul + upsync 完成动态负载均衡的方法详解
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
nginx location 带斜杠【 / 】与不带的区别
Apr 13 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
Apr 29 Servers
服务器间如何实现文件共享
May 20 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
Zabbix对Kafka topic积压数据监控的解决方案
Jul 07 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
nginx七层负载均衡配置详解
Jul 15 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
Apache自带的ab压力测试工具的实现
Jul 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 sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
vue自定义树状结构图的实现方法
2020/10/18 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
PyQt5实现下载进度条效果
2018/04/19 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
python字典一键多值实例代码分享
2019/06/14 Python
通过实例解析Python return运行原理
2020/03/04 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
Python 实现集合Set的示例
2020/12/21 Python
Ruby如何定义一个类
2012/10/08 面试题
电子商务网站的创业计划书
2014/01/05 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
大跃进口号
2014/06/16 职场文书
质量月口号
2014/06/20 职场文书
股份合作协议书
2014/09/10 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书