跳至主要内容

zabbix使用脚本发送带附件的邮件

 Zabbix自带的报警服务很丰富,其中发送电子邮件是使用最多的功能。

但自带的这个功能不支持在邮件中添加附件。


因此写一个bash脚本来实现这个功能。


在/usr/lib/zabbix/alertscripts/ 目录下用zabbix用户新建一个bash脚本

因为zabbix账户只能以服务角色登录,这里使用root账户登录后,用sudo -u zabbix vim xxx.sh来创建脚本

在之前将zabbix的目录权限取得

chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts/

chown -R zabbix:zabbix /var/log/zabbix/


#!/bin/bash

#send email

# $1 send to

# $2 subject

# $3 message


# 从其他机器获取log文件 先准备好用密钥登录配置 或者使用明文sshpass。

scp ssh [email protected]:/var/log/xx.log /var/log/zabbix/

# 给日志变量赋值

$ls_attachment=/var/log/zabbix/xx.log


#因为echo会带入~M的换行符,导致邮件内容变成附件,这里要将传递进来的邮件正文的格式进行调整,先用zabbix用户创建文本文件sudo -u zabbix touch /usr/lib/zabbix/alertscripts/message.txt

$ls_message=/usr/lib/zabbix/alertscripts/message.txt

echo "$3" > $ls_message

# 转换文本格式

dos2unix $ls_message

mail -a $ls-attachment -s "$2" "$1" < $ls_message


完整的脚本如下:

#!/bin/bash

#send email

# $1 send to

# $2 subject

# $3 message

scp ssh [email protected]:/var/log/xx.log /var/log/zabbix/

$ls_attachment=/var/log/zabbix/xx.log

$ls_message=/usr/lib/zabbix/alertscripts/message.txt

echo "$3" > $ls_message

dos2unix $ls_message

mail -a $ls-attachment -s "$2" "$1" < $ls_message


给脚本添加运行权限


chmod +x /usr/lib/zabbix/alertscripts/xxx.bash


完成后,在zabbix中新建报警类型,类型为脚本,脚本名称填入刚刚创建的xxx.bash脚本。

脚本参数有三个,{ALERT.SENDTO};{ALERT.SUBJECT};{ALERT.MESSAGE}。

单击添加即可完成警报类型的添加。

评论

此博客中的热门博文

PVE安装Windows 11虚拟机 step by step

Win 11已经发布有两周多了,因为引进了tpm机制,只支持较新的设备安装,对于虚拟机的支持不高。 目前各个虚拟化平台针对win 11已经有对应的方案,今天来介绍一下PVE 7.0安装win 11虚拟机。 提前下载win11和virtio win 11的镜像。 win 11镜像下载这里就不说了,很多途径。 virtio的镜像在这里下载https://github.com/virtio-win/virtio-win-pkg-scripts,下载最新的virtio win iso。 新建和配置虚拟机 点击新建虚拟机 给虚拟机起名,然后下一步。 选择加载win 11镜像文件,系统类型选择windows。 系统配置这里: bios选择OVMF(UEFI);机器选择q35;勾选TPM,并选择TPM版本为v2.0;然后存储的位置选择同一个存储。 硬盘设备选择VirtIO,磁盘大小选择64G,32G其实也可以,但是微软要求最低64G。 设置CPU和内存,微软要求最低2核8G,这里我们给4核8G,因为是单节点,所以CPU类型勾选host。 配置网卡信息后继续。 这里不要勾选自动创建后启动,确认配置信息后点击完成。 到新建的虚拟机这里,新建光驱。 选择下载的驱动镜像,点击创建。 完成后点击启动。 启动后进入windows安装界面,这里照一般操作进行。 到安装类型这里选择 自定义安装。 到选择安装位置这里会无法显示硬盘信息,因为缺少驱动,点击加载驱动程序。 然后点击浏览。 选择驱动镜像下的amd64下的w10文件夹,点击确定。 加载驱动后磁盘控制器能够显示,点击下一页。 选中显示的磁盘后点击下一步进行安装。 文件复制完后会重启几次。 安装完成后会启动第一次配置界面。 输入账户信息后进行系统配置。 配置完成后进入桌面。 在设备管理器中有一些设备未能正确识别。 进入驱动镜像,运行virtio-win-ge-x64安装文件安装驱动。 安装完成后,所有设备都能正确识别。 至此win11虚拟机安装完成。

安装部署JumpServer

 最近遭遇一起云主机因安全防护措施不到位被安装挖矿程序的情况。 为提高云主机的安全性和考虑搭建一台跳板机来访问云主机以提高安全性。 目前主流且还在维护的JumpServer是比较好的解决方案,搭建一台JumpServer做测试。 这里使用ubuntu 20.04 lts作为OS。 安装操作系统后先修改软件仓库为国内163源。 sudo cp /etc/apt/sources.list    /etc/apt/sources.list.bak sudo nano /etc/apt/sources.list 注释掉原来的内容 添加网易源 #网易源 deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse 执行更新 sudo apt-g...

为阿里云ecs创建自定义快照脚本

阿里云的ecs自动快照功能只支持最长一周的间隔,而有些生产环境不太需要如此频繁的备份。 因此写了一个每月备份一次的脚本来解决这个问题 一共分五个步骤,分别是创建执行快照的账号,分配账号权限,安装阿里云cli,创建脚本,编辑计划任务。 一.创建账号。 为降低安全风险,这里新创建一个账号用于执行生成快照的脚本。 在创造账号时,只勾选api访问。 记录下创建完成后的token信息。 二.分配账号权限。 创建一个自定义的访问权限策略。 {     "Statement": [         {             "Effect": "Allow",             "Action": "ecs:*Snapshot*",             "Resource": "*"         }     ],     "Version": "1" } 然后将这个策略套给新创建的账号,同时赋予这个账号ecs的只读权限。 三.安装阿里云cli客户端,这里就不做赘述,直接看阿里云的文档就好。 https://help.aliyun.com/document_detail/139508.html?spm=a2c4g.139508.0.0.3c18337a5eCaya 四.创建脚本。 aliyun configure set \   --profile bkadminprofile \   --mode AK \   --region cn-shanghai \   --access-key-id ************************ \   --access-key-secret ********************** 先获取ecs的实例id   aliyun ecs DescribeInstances --RegionId cn-shanghai --output c...