zabbix 用户组 邮件告警
1. 创建用户组 2. 添加用户 3. 添加告警媒介,邮箱告警配置
先看下触发告警的流程
1.创建用户组
2.为刚刚创建的用户组添加用户
第二个的报警媒介就先不创建,
3.添加告警媒介
在添加告警媒介之前,我们需要先把邮件发送调试成功
发送告警信息有很多方式,我这里是用邮件演示;
邮件发送是主要是通过mailx命令发送,在此之前我们需要先关闭sendmail 和 postfix;
①进入到zabbix-server服务器
#①查看一下sendmail状态,发现我没有这个服务[root@localhost ~]# systemctl status sendmailUnit sendmail.service could not be found.②查看postfix,发现服务是开着的,关闭postfix,并且移除该服务·[root@localhost ~]# systemctl status postfix● postfix.service - Postfix Mail Transport AgentLoaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)Active: active (running) since 二 -11-23 23:14:01 CST; 1 day 16h agoProcess: 1131 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)Process: 1127 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)Process: 1088 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)Main PID: 1430 (master)Tasks: 2Memory: 6.4MCGroup: /system.slice/postfix.service├─1430 /usr/libexec/postfix/master -w└─1439 qmgr -l -t unix -u11月 25 15:30:14 localhost.localdomain postfix/master[1430]: warning: /usr/libexec/postfix/pickup: bad command startup -- throttling11月 25 15:31:14 localhost.localdomain postfix/pickup[29089]: fatal: parameter inet_interfaces: no local interface found for ::111月 25 15:31:15 localhost.localdomain postfix/master[1430]: warning: process /usr/libexec/postfix/pickup pid 29089 exit status 111月 25 15:31:15 localhost.localdomain postfix/master[1430]: warning: /usr/libexec/postfix/pickup: bad command startup -- throttling11月 25 15:32:15 localhost.localdomain postfix/pickup[29113]: fatal: parameter inet_interfaces: no local interface found for ::111月 25 15:32:16 localhost.localdomain postfix/master[1430]: warning: process /usr/libexec/postfix/pickup pid 29113 exit status 111月 25 15:32:16 localhost.localdomain postfix/master[1430]: warning: /usr/libexec/postfix/pickup: bad command startup -- throttling11月 25 15:33:16 localhost.localdomain postfix/pickup[29138]: fatal: parameter inet_interfaces: no local interface found for ::111月 25 15:33:17 localhost.localdomain postfix/master[1430]: warning: process /usr/libexec/postfix/pickup pid 29138 exit status 111月 25 15:33:17 localhost.localdomain postfix/master[1430]: warning: /usr/libexec/postfix/pickup: bad command startup -- throttling[root@localhost ~]# [root@localhost ~]# systemctl stop postfix[root@localhost ~]# systemctl disable postfixRemoved symlink /etc/systemd/system/multi-user.target.wants/postfix.service.#安装mailx[root@localhost ~]# yum install mailx[root@localhost ~]#
配置mail.rc之前先打开qq邮箱的pop3/smtp服务,如果用163或者其他邮箱也是要开启
开启会获得一个授权码,记一下,等下要写在配置文件里
开启位置:qq邮箱——>“设置”——>“账户”
#配置mail.rc[root@localhost ~]# vi /etc/mail.rc#在配置文件最后加上下面命令set from=你自己的邮箱@ (用来发送邮件的)set smtp=set smtp-auth-user=你自己的邮箱@ (登录的名字,为了方便可以直接设置为邮箱)set smtp-auth-password=xxxxxx(这个就是你刚刚获取的授权码)set smtp-auth=login#然后保存
#测试一下邮箱能否发送通过[root@localhost ~]# echo "你想发送的内容" |mailx -s "邮件的标题" xxxx@(你想发送给谁)#例如:[root@localhost ~]# echo "Hello,Xukaidi! test" | mailx -s "Zabbix Mail test" 1134298123@[root@localhost ~]#
ok,邮箱可以通了;
#接下来配置告警发送的脚本#先查看一下邮件配置文件所在位置,进入到server配置文件里查看[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf!!!!!!!!!!!!!!!!!!!!!#***但是我这里zabbix-server是安装在docker容器里的***[root@localhost ~]# docker exec -it xkdzabbix /bin/bashbash-5.0# vi /etc/zabbix/zabbix_server.conf bash-5.0# exitAlertScriptsPath=/usr/lib/zabbix/alertscripts[root@localhost ~]#[root@localhost ~]# cd /usr/lib/zabbix/alertscripts[root@localhost alertscripts]#ls[root@localhost alertscripts]#vim mail.sh
脚本文件内容如下
#!/bin/bashSENT_TO=$1告警的接受人SENT_SUBJECT=$2 标题SENT_CONTENT=$3 Bodyecho "$SENT_CONTENT"|mailx -s "$SENT_SUBJECT" $SENT_TO
按“:x”,保存退出;
[root@localhost ~]# docker exec -it xkdzabbix /bin/bash
bash-5.0# chmod a+x mail.sh
bash-5.0# vi mail.sh
bash-5.0# ./mail.sh 1134298123@ “zabbix test2” “test two”
#给脚本添加权限bash-5.0# chmod a+x mail.shbash-5.0# vi mail.shbash-5.0# ./mail.sh 1134298123@ "zabbix test2" "test two"./mail.sh: line 7: mailx: command not found如果zabbix-server是直接部署在虚拟机里的,那么这里就可以直接成功了!下面是针对server装在docker容器里的问题
!!! !!! !!!
就在我以为一切都很完美的时候; 报错了,mailx找不到, 我忘了我的服务是在docker里面的,而前面我是把mailx安装在了虚拟机上,docker容器里根本没有mailx
那我在docker里安装一下***,我不知道是否是应该安装这个,网上也找不到,有谁知道,评论告诉我一下,我安装完,进入docker里执行脚本依然报错,***
[root@localhost ~]# docker search heirloom-mailxNAME DESCRIPTION STARSOFFICIAL AUTOMATEDcorentinaltepe/heirloom-mailx Heirloom-mailx in Alpine to easily send emai… 5fezzz/php-fpm php8.0-fpm(latest) image for nextcloud: Ser… 1[OK]harobed/docker-heirloom-mailx heirloom-mailx Alpine Docker image 0[OK]teamidefix/vault-mailxVault + heirloom-mailx0asproat/debian-mailx Debian stretch with heirloom-mailx 0[root@localhost ~]# docker pull corentinaltepe/heirloom-mailxUsing default tag: latestlatest: Pulling from corentinaltepe/heirloom-mailx97518928ae5f: Already exists 6bac87e09cbb: Pull complete Digest: sha256:671585c532fa92145b436d66e735cc5f4d64bf80d2cc1efc3def736debef4c41Status: Downloaded newer image for corentinaltepe/heirloom-mailx:latestdocker.io/corentinaltepe/heirloom-mailx:latest
下图为zabbix-server没有安装在docker里可以执行脚本,就会成功;
错误
[root@localhost ~]# docker exec -it xkdzabbix /bin/bash bash-5.0# ./mail.sh 1134298123@ "zabbix test2" "test two"bash: ./mail.sh: No such file or directorybash-5.0# cd /usr/lib/zabbix/alertscriptsbash-5.0# ./mail.sh 1134298123@ "zabbix test2" "test two"./mail.sh: line 6: mailx: command not foundbash-5.0# exit
记录一下错误,后面再搞,关于docker安装的这个heirloom-mailx配置文件,和上面mail.rc是一样的