通过前面的文章,你已经可以快速地搭建一个报警系统,并能正常的收到报警邮件了。不过在很多企业级环境下,邮件发送服务器往往放在外网,而zabbix server放置在内网,在这种情况下,zabbix的报警信息又如何能传送给邮件发送服务器呢?

  其实也很简单,方法也很多,这里给出一个我们在实际生产环境中的例子,大致的流程是:

  1. 请求网络组的同事将邮件发送服务器的22端口开放给内网的zabbix机器;
  2. 前面提到的server报警脚本需要做改造,将报警信息封装成一个时间戳文件;
  3. 利用scp命令将时间戳文件传送给邮件发送服务器,为避免登录密码,需要在server端生成免登录证书信息,并将公钥给邮件发送服务器;
  4. server发送完后删除时间戳文件;
  5. 邮件发送服务器专门开辟一个路径存放传送过来的时间戳文件;
  6. 邮件发送服务器上,用java或python等你熟悉的语言写一个小程序,可以解析时间戳文件,并调用Mutt进行邮件发送;
  7. 邮件发送服务器上,用crontab设置一个1分钟的定时调用,调用小程序处理时间戳文件。

  具体做法如下:

  • 改造notification.sh
#!/bin/bash

CURRENT_TIME=`date '+%s'`
MAILPATH=/usr/local/zabbix/share/zabbix/alertscripts #step make the mail file
echo to=$ >> $MAILPATH/$CURRENT_TIME.txt
echo subject="$2" >> $MAILPATH/$CURRENT_TIME.txt
echo content="$3" >> $MAILPATH/$CURRENT_TIME.txt #step send the file
scp $MAILPATH/$CURRENT_TIME.txt zabbix@192.9.199.13:/home/zabbix/mails/ #step rm the file
rm -f $MAILPATH/$CURRENT_TIME.txt
  • 配置ssh免登录,先在邮件发送服务器上执行如下动作
groupadd zabbix
useradd -g zabbix zabbix
su - zabbix
ssh-keygen
#安装提示一步步敲回车生成证书信息
cd ~/.ssh
touch authorized_keys
cat id_rsa.pub >> authorized_keys

  同样的方法在zabbix server上执行一次,再将zabbix server的公钥信息拷贝至邮件发送服务器

scp ~/.ssh/id_rsa.pub zabbix@192.9.199.13:~/
#进入邮件发送服务器
ssh 192.9.199.13
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

  至此,报警文件即可免登录发送至邮件发送服务器。

  在邮件发送服务器设置定时调用

crontab -e
*/ * * * * nohup java -jar /home/zabbix/notificationParse.jar &

  解析报警文件这块内容实现因人而异,就不再详述。

[原创] zabbix学习之旅六:如何解决zabbix server在内网,而邮件发送服务器在外网的问题的更多相关文章

  1. [原创] zabbix学习之旅二:yum安装

    对于允许连接公网的环境下,显然通过yum安装是最为简单方便的,也是官网推荐的安装方式.通过这种方式安装,会将php.apache.zabbix本身都一并安装,解决了烦人的依赖包问题.   本文将介绍如 ...

  2. [原创] zabbix学习之旅一:源码安装

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存 ...

  3. [原创] zabbix学习之旅五:如何快速搭建一个报警系统

    通过之前的文章,我们已搭建好zabbix server.agent和mail客户端,现在万事俱备,只差在server的界面中进行相应配置,即可快速搭建一个报警系统.总的来说,快速搭建一个报警系统的顺序 ...

  4. [原创] zabbix学习之旅四:mail客户端安装

    相信大家使用zabbix的最主要目的就是当被监控机器发生故障时,能通过zabbix获得第一时间的报警提醒.zabbix常用的报警媒介有email,短信,jabber和脚本,这其中脚本类型最为灵活,尤其 ...

  5. zabbix学习(一)——LNMP环境搭建及zabbix安装

    第一部分:LNMP环境搭建 一.环境说明: OS:   centos7.6_x64nginx:nginx-1.16.0php:   php-7.1.11mysql:mysql-5.6.44 zabbi ...

  6. [原创] zabbix学习之旅七:如何远程操作被监控机器

    虽然我们已经创建了一个报警系统,但在实际场景中,运维人员从得到报警到实际解决问题有一定的时差,若业务系统没有做高可用,那业务不得不中断,对于某些要求严格的企业级环境,这是不可容忍的,那有没有方法能让z ...

  7. [原创] zabbix学习之旅三:agent安装

    部署完zabbix server后,自然要部署zabbix agent.在官方描述中,agent是部署在被监控的机器上,用于采集CPU.内存.磁盘等统计信息,并上报给server用于进一步处理.age ...

  8. Spring学习之旅(六)--SpringMVC集成

    对大多数 Java 开发来说,基于 web 的应用程序是我们主要的关注点. Spring 也提供了对于 web 的支持,基于 MVC 模式的 Spring MVC 能够帮助我们灵活和松耦合的完成 we ...

  9. 解决Windows Server 2012 在VMware ESXi中经常自动断网问题

    最近一些开发人员反映他们使用的 Windows server2012 R2 虚拟机过段时间就远程连接不上了,ping也不通(已关闭防火墙),我们登录ESXi发现,Windows Server 的网络图 ...

随机推荐

  1. 【转载】在 Visual Studio 2012 中创建 ASP.Net Web Service

    在 Visual Studio 2012 中创建 ASP.Net Web Service,步骤非常简单.如下: 第一步:创建一个“ASP.Net Empty Web Application”项目 创建 ...

  2. Part 45 to 47 Talking about Enums in C#

    Part 45   C# Tutorial   Why Enums Enums are strongly typed constants. If a program uses set of integ ...

  3. 英特尔® 实感™ SDK 架构

    英特尔® 实感™ SDK在架构上完全不同于其前代系统 — 英特尔® 感知计算 SDK. 如果您使用英特尔感知计算 SDK 进行应用开发,会很快发现,全新的 SDK 可提供增强型编程模式,从而可通过几种 ...

  4. [老老实实学WCF] 第九篇 消息通信模式(上) 请求应答与单向

    老老实实学WCF 第九篇 消息通信模式(上) 请求应答与单向 通过前两篇的学习,我们了解了服务模型的一些特性如会话和实例化,今天我们来进一步学习服务模型的另一个重要特性:消息通信模式. WCF的服务端 ...

  5. 从0开始学习react(一)

    本人前端小菜鸡一枚,因为公司要重构网站,打算用用react,毕竟一切为了学习(装B)嘛!!! 在学习react之前,看了许多资料,博客,官方文档之类的,可我这记吃不记打的记性,还是需要在这里记录一下, ...

  6. Tomcat找不到service.bat文件

    说明:我们给客户做安装包,Tomcat我们设置了编码和端口,所以用绿色版的,同时又要注册成windows服务.但是bin下面没有service.bat文件(tomcat6.exe,tomcat6x.e ...

  7. mfc110ud.dll not found

    mfc110ud.dll not found while debugging vs2012 MFC application. Possible Solutions: 1) >>>&g ...

  8. Standford CoreNLP

    Stanford CoreNLP Stanford CoreNLP提供一组自然语言处理的工具.这些工具可以把原始英语文本作为输入,输出词的基本形式,词的词性标记,判断词是否是公司名.人名等,规格化日期 ...

  9. NSTimer定时器类

    NSTimer是Cocoa中比较常用的定时器类,基本操作如下: handleTimer方法可以自行定义.在需要的地方创建timer即可,handleTimer就可以每0.5秒执行一次.   - (vo ...

  10. 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法

    $x_pi = 3.14159265358979324 * 3000.0 / 180.0; //火星坐标系 (GCJ-02)转百度坐标系 (BD-09)算法 function bd_encrypt($ ...