Zabbix安装
学习并搭建监控系统,学习总结如下:
Zabbix监控系统
在使用Zabbix监控主机的CPU、内存、磁盘和网络接口等信息前,我们需要先部署企业中的第一个Zabbix监控主机。本文主要介绍如何在RHEL6.5上部署一个Zabbix监控系统。
Part.1 Zabbix系统部署要求
Zabbix监控系统的运行条件,可以是运行Linux、IBM AIX、FreeBSD、NetBSD、OpenBSD、HP-UX、Mac OS X和Solaris操作系统的机器,并且需要C语言编译器。
Zabbix系统的Web GUI依赖于LAMP或者LNMP环境之上,其中本文使用的是zabbix2.4.6版本,其中MySQL版本最低要求5.0.3及以后,并且使用InnoDB存储引擎
Zabbix Server的基本配置
1,关闭selinux和iptables
2,设置IP地址、子网掩码等网络信息
3,设置主机名和hosts文件
4,配置一个本地或网络的yum下载源
5,安装c语言和C++的开发环境(gcc、gcc-c++、automake、autoconf)
yum install -y gcc gcc-c++ automake autoconf
yum -y install libtool libtool-ltdl libtool-ltdl-devel
yum install expat-devel openssl-devel
源码部署LAMP环境(apache)
Zabbix 最为重要的步骤是部署一个LAMP环境,这是运行zabbix所必须的。具体步骤如下:
安装Apache的依赖包apr、apr-util和pcre
软件包下载
1. 安装包httpd-*.*.*.tar.gz
下载地址:
http://httpd.apache.org/download.cgi
2. 关连包:
http://apr.apache.org/download.cgi#apr0
apr-1.4.2.tar.bz2下载地址
下载地址:
http://apache.freelamp.com/apr/apr-1.4.2.tar.bz2
pcre2-10.32.zip下载地址
https://sourceforge.net/projects/pcre/files/latest/download
apr-util-1.3.9.tar.gz
下载地址:
http://apr.apache.org/download.cgi
下载历史版本:
http://archive.apache.org/dist/apr/
安装
安装apr:
# tar -zxf apr-1.5.2.tar.gz
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install
安装apr-util
# tar -zxf apr-util-1.5.1.tar.gz
# cd apr-util-1.5.1
# ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr
# make && make install
下载pcre软件包后,执行如下命令安装
# tar -jxf pcre-8.31.tar.bz2
# cd pcre-8.31
# ./configure --prefix=/usr/local/pcre
# make && make install
如果在安装过程中,遇到错误,请按照系统的错误提示解决,完成成以上步骤,Apache所依赖的apr、apr-util和pcre就安装完成了。
安装Apache软件包
Apache 是模块化的服务器,核心服务器中只包含了功能最常用的模块,而扩展功能由其他模块提供。设置过程中,你必须指定需要包含的模块。Apache 文档中有模块清单备查,其中状态为"Base"的模块会被默认地包含进核心服务器,如果不需要包含某个模块(比如mod_userdir),则必须明确地禁用它;其他状态的模块(比如mod_expires),也必须明确启用以使之包含进核心服务器。
一般情况下,核心模块功能我们全部启用;除此之外,我们为了使搜索引擎更容易收录我们的网页,需要将动态页面的URL 重写为静态页面的URL,需要mod_rewrite;为了今后动态添加模块而不重新编译apache(例如添加PHP 的支持),需要启用mod_so。
下载Apache软件包后,执行如下命令安装
# tar -zxf httpd-2.4.37.tar.gz
# cd httpd-2.4.37
# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-so --enable-rewrite --enable-mime-magic --enable-mem-cache
# make && make install
报错处理:
报错1:make[2]: *** [htpasswd] Error 1
apr apr-util用了最新的1.6版本,但是1.6在centos7上编译安装httpd没有问题,降低版本,用1.5版本解决
安装MySQL
#groupadd mysql
#useradd -g mysql mysql
安装mysql到/usr/local/mysql下
#cd /usr/local
#tar zxvf /{MySQL5.6_path}/mysql-{version}.tar.gz
例如我的配置路径为:
#cd /usr/local
#tar -zxvf /opt/mysql/mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
修改解压后文件夹名为 mysql
#mv mysql-5.6.29-linux-glibc2.5-x86_64 mysql
chown -R mysql:mysql mysql
至此mysql已经安装完了,但还需要初始化,初始化mysql表、test表、infomation表等
cd mysql
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/payment/mysqldata
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
cp my.cnf /etc/my.cnf
vi /etc/my.cnf
[mysqld]中添加:
user=mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
port = 3306
server_id = 1
添加环境变量
vi /etc/profile
export PATH=/usr/local/mysql/bin:/usr/local/mysql/sbin:$PATH
启mysqld:
#ln -s /usr/local/mysql/bin/mysql /usr/bin
#service mysqld start
或
/etc/init.d/mysqld start
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &
停mysqld:
/etc/init.d/mysqld stop
/usr/local/mysql/bin/mysqladmin -S /tmp/mysql3306.sock shutdown
service mysqld stop
登陆MySQL并且删除空用户
初次登录可不加用户密码。
delete from mysql.user where user!='root' or host!='localhost';
truncate table mysql.db;
drop database test;
flush privileges;
安装PHP
PHP 是一种嵌入在 HTML 并由服务器解释的脚本语言。它支持许多流行的数据库,包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。
要使PHP 支持相关的功能那么在安装前需要安装相应的软件,例如要使PHP支持MySQL 数据库,在编译PHP之前,必须首先安装MySQL 数据库。
在安装完Apache 和MySQL 后,可以开始安装PHP 了。安装PHP 的步骤如下:
安装GD库依赖软件包
下载zlib,执行如下命令安装
http://www.zlib.net/fossils/
# tar -zxf zlib-1.2.8.tar.gz
# cd zlib-1.2.8
# ./configure --prefix=/usr/local/zlib
# make && make install
下载libpng,执行如下命令安装
http://www.libpng.org/pub/png/libpng.html
# tar -zxf libpng-1.6.36.tar.gz
# cd libpng-1.6.36
# ./configure --prefix=/usr/local/libpng --enable-shared
# make && make install
下载jpeg,执行如下命令安装
http://www.ijg.org/files/
# tar -zxf jpegsrc.v9a.tar.gz
# cd jpeg-9a/
# ./configure --prefix=/usr/local/jpeg
# make && make install
下载freetype,执行如下命令安装
http://ftp.twaren.net/Unix/NonGNU/freetype/
# tar -zxf freetype-2.7.tar.gz
# cd freetype-2.7
# ./configure --prefix=/usr/local/freetype
# make && make install
下载libXpm,执行如下命令安装
http://distfiles.macports.org/xpm/
# tar -jxvf libXpm-3.5.12.tar.bz2
# cd libXpm-3.5.12
# ./configure --prefix=/usr/local/libxpm
# make && make install
安装GD库
下载GD,执行如下命令安装(需要代理访问)
https://bitbucket.org/libgd/gd-libgd/downloads/
# tar -zxf libgd-2.1.1.tar.gz
# cd libgd-2.1.1
# ./configure --prefix=/usr/local/gd --with-zlib=/usr/local/zlib --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg --with-freetype=/usr/local/freetype --with-xpm=/usr/local/libxpm
# make && make install
安装PHP依赖软件包
下载libxml2,执行如下命令安装
ftp://xmlsoft.org/libxml2/
# yum install python-devel -y
# tar -zxf libxml2-2.9.2.tar.gz
# cd libxml2-2.9.2
# ./configure
make && make install
下载libiconv,执行如下命令安装
https://directory.fsf.org/wiki/Libiconv
# tar -zxf libiconv-1.15.tar.gz
# cd libiconv-1.15
# ./configure --prefix=/usr/local/libiconv
# make && make install
下载libmcrypt,执行如下命令安装
https://sourceforge.net/projects/mcrypt/files/Libmcrypt/
# tar -zxf libmcrypt-2.5.8.tar.gz
# cd libmcrypt-2.5.8
# ./configure --prefix=/usr/local/libmcrypt
# make && make install
安装PHP软件包
刚才已经提到,打算使用MySQL 来存储数据,因此必须要指名支持MySQL 数据(--with-mysql),并指名MySQL 数据的安装位置;如果需要处理XML 数据,需要 --wiht-xml 和 –with-dom; 如果需要使用PHP 脚本来生成图片, 需要使用--with-gd。总之如果需要使用的功能的库文件不在系统路径内,必须要明确支持,如果不明确支持,那么配置脚本自动进行处理。集体需要使用什么功能,这取决于站点的PHP 脚本使用的函数。
下载PHP,执行如下命令安装
http://www.php.net/downloads.php
# ln -s /usr/local/libxpm/include/X11/xpm.h /usr/include/X11/xpm.h
# tar -zxf php-5.6.39.tar.gz
# cd php-5.6.39
# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-gd=/usr/local/gd --with-zlib --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/local/libxpm --with-iconv=/usr/local/libiconv --with-mcrypt=/usr/local/libmcrypt --enable-mbstring --enable-bcmath --enable-sockets --with-mysql=/usr/local/mysql --with-mysqli --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --with-gettext --enable-fpm
configure error xml2-config not found. please check your libxml2 installation 错误
安装libxml2和libxml2-devel包即可
# make && make install
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
修改php.ini参数:(zabbix环境需要修改的参数)
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = PRC
配置Apache
在Apache配置文件httpd.conf中增加如下行,让Apache支持PHP。
AddType application/x-httpd-php .php
在Apache的网站主目录/usr/local/apache/htdoc下,创建一个测试文件,文件名称自定义,例如:phpinfo.php;编辑phpinfo.php测试页,内容如下:
phpinfo ();
?>
利用该测试页,可以测试Apache是否支持PHP,同时可以通过输出结果查看是否支持MySQL。
启动Apache服务进行测试
# /usr/local/apache/bin/apachectl start
在浏览器中访问刚才的页面,例如:http://localhost/phpinfo.php
如果成功返回php 的相关信息,说明安装成功
源码安装zabbix
安装Zabbix Server依赖包
为了支持SNMP,需要net-snmp软件,执行如下命令安装:
# yum install -y net-snmp net-snmp-devel curl curl-devel
源码安装Zabbix Server
准备工作完成后,可以正式开始安装Zabbix,执行如下步骤完成Zabbix的安装:
l 创建Zabbix的用户和组
# groupadd zabbix
# useradd -g zabbix -s /sbin/nologin zabbix
l 在MySQL数据库中创建zabbix用户账号并授权
- 创建MySQL账号语法:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
其中:
• username :你将创建的用户名
• host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%
•password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
- 授权语法:
GRANT privilegesON databasename.tablename TO 'username'@'host'
其中:
•privileges - 用户的操作权限,如SELECT ,INSERT , UPDATE 等.如果要授予所的权限则使用ALL
• databasename - 数据库名
• tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*
下面是创建zabbix账号,密码为zabbix的范例:
mysql>create user 'zabbix'@'localhost' identified by 'zabbix';
mysql>grant all privileges on zabbix.* to zabbix@'127.0.0.1'
l 在MySQL数据库中创建Zabbix数据库
mysql> create database zabbix character set utf8;
l 导入数据库的sql脚本
# tar -zxf zabbix-4.0.2.tar.gz
# cd zabbix-4.0.2
cd database/mysql
#mysql -uzabbix -pzabbix zabbix < schema.sql
#mysql -uzabbix -pzabbix zabbix < images.sql
#mysql -uzabbix -pzabbix zabbix < data.sql
l Zabbix的编译安装
下载安装libevent-2.0.20-stable.tar.gz
http://libevent.org/old-releases.html
tar -zxvf libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable
./configure --prefix=/usr/local/libevent
make&&make install
安装Zabbix
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --enable-proxy --with-libevent=/usr/local/libevent --with-libpcre=/usr/local/pcre
# make
# make install
配置Zabbix服务
l 添加配置文件到/etc目录下
# ln -s /usr/local/zabbix/etc/ /etc/zabbix
l 修改ZabbixServer配置文件zabbix_server.conf,在文件尾添加如下内容:
LogFile=/tmp/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户账户
DBPassword=zabbix #指定zabbix数据库密码
ListenIP=0.0.0.0 #服务器IP地址
l 修改ZabbixAgentd配置文件zabbix_agentd.conf,在文件尾添加如下内容:
LogFile=/tmp/zabbix_agentd.log #日志保存位置
PidFile=/tmp/zabbix_agentd.pid #进程PID
EnableRemoteCommands=1 #允许执行远程命令
Server=10.25.193.6 #agent端的ip
Hostname=localhost #必须与zabbix创建的host name相同
这里其实是客户端设置,且安装软件时必须有--enable-agent选项
l 为Web前端,添加php文件
# cp -rf zabbix-4.0.2/frontends/php /usr/local/apache/htdocs/zabbix
# chown -R zabbix.zabbix /usr/local/apache/htdocs/*
l 为Web前端修改php相关参数,
cp php-5.6.39/php.ini-production /usr/local/php/etc/php.ini编辑/usr/local/php/etc/php.ini配置文件,找到如下几项,修改结果如下:
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
post_max_size = 32M
memory_limit = 128M
mbstring.func_overload = 0
always_populate_raw_post_data = -1
说明:找到以上几项,如果有;号的请删除掉,然后修改为以上值
l 重启Apache服务,使得修改生效
# /usr/local/apache/bin/apachectl restart
l 开始配置Web前端:
• 在浏览器中访问Zabbix Server的地址,例如:http://10.25.193.6/zabbix/zabbix.php
• 在“欢迎界面”单击“next”
• 在“Check ofpre-requisites”界面,确保所有项目全部显示“ok”,单击“next”
在“Configure DB connection”界面,输入MySQL中用于连接Zabbix数据库的用户名和密码
在“Zabbix server details”界面,输入Zabbix Server端的主机名或IP地址
在“Pre-Installationsummary”界面,单击“next”
在“Install”界面,按照提示将配置文件下载到/usr/local/apache/htdoc/zabbix/conf下,名称为zabbix.conf.php,注意文件权限为zabbix,完成后运行“Retry”点击“完成”
下载zabbix.conf.php ,上传到服务器对应目录, /usr/local/apache/htdocs/conf/zabbix.conf.php
至此,Zabbix的安装已经完成,接下来启动Zabbix Server的服务。
启动Zabbix服务
报错处理:
zabbix_server: error while loading shared libraries: libmysqlclient.so.18
处理:
echo "/usr/local/mysql/lib" >>/etc/ld.so.conf
然后执行ldconfig使其生效
error while loading shared libraries: libevent-2.0.so.5
ln -s /usr/local/libevent/lib/libevent-2.0.so.5 /lib64/libevent-2.0.so.5
error while loading shared libraries: libpcre.so.1
ln -s /usr/local/pcre/lib/libpcre.so.1 /lib64
l 可以直接执行/usr/local/zabbix/sbin/下的zabbix_server和agentd程序文件
# /usr/local/zabbix/sbin/zabbix_server
# /usr/local/zabbix/sbin/zabbix_agentd
l 为了方便Zabbix Server和Agent的服务的启动和关闭,复制启动脚本
# cp zabbix-4.0.2/misc/init.d/fedora/core/zabbix_server /etc/init.d/
# cp zabbix-4.0.2/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
l 将zabbix_server和agentd和启动脚本文件中的BASEDIR的值修改为
BASEDIR=/usr/local/zabbix
l 设置ZabbixServer和Agentd开机自动启动
# chkconfig zabbix_server on
# chkconfig zabbix_agentd on
l 最后使用http://10.25.193.6/zabbi.php访问,默认的用户名admin和密码为zabbix登录验证:
如果输入用户名密码后,到此,整个Zabbix部署完成。就可以开启你使用Zabbix监控资源
添加监控
zabbix客户端部署
zabbix客户端安装
下载安装包:
https://www.zabbix.com/download_sources
安装pcre见apache安装,若还需要其它依赖包,请安装
ln -s /usr/local/pcre/lib/libpcre.so.1 /lib64
tar xzvf zabbix- 4.0.2.tar.gz
cd zabbix-4.0.2
./configure --prefix=/usr/local/zabbix --enable-agent --with-libpcre=/usr/local/pcre --with-net-snmp
make&&make install
cp zabbix-4.0.2/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
vim /etc/init.d/zabbix_agentd
修改BASEDIR=/usr/local/ 为 BASEDIR=/usr/local/zabbix
启动agent服务
groupadd zabbix //添加zabbix组
useradd zabbix -g zabbix //添加zabiix用户
usermod -s /sbin/nologin zabbix
service zabbix_agentd start //启动服务
chkconfig zabbix_agentd on //开启自启
配置agent
zabbix配置
vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=10.25.193.6,127.0.0.1 >> Server="服务端IP“ 其中 //如不在统一网段,需要添加多个IP、网关IP
ServerActive=10.25.193.6 >> ServerActive="服务端IP”
Hostname=Zabbix server >> Hostname="本机IP”
UnsafeUserParameters=1 #是否允许自定义的key,1为允许,0为不允许
AllowRoot=0 #希望使用root用户启动, AllowRoot=1,0为不允许(默认)
若开启了iptables,则需要打开,客户端开启端口10050
/sbin/iptables -I INPUT -p tcp --dport 10050 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 10051 -j ACCEPT
/etc/rc.d/init.d/iptables save
测试服务端是否能连接到Agent端
可先测试本机:
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k system.hostname
再测试服务端到agent端
/usr/local/zabbix/bin/zabbix_get -s 10.25.193.7 -p 10050 -k "system.uptime"
-s后面接的是目标地址
-p后面要加端口号,这个一般都是10050
-I 后面加原地址,不过这个一般用不上
-k 后面接的就是item项目里的key
Assuming that agent dropped connection because of access permissions(由于访问权限导致agent连接失败)
问题实现:zabbix_server和zabbix_agent在同一台机器,server监听全网地址,agent监听内网地址。导致上面的报错发生
解决方案:把zabbix_agentd.conf中 的server把zabbix_server的公网和内网地址都加就行。然后agent就可以正常获取到值了
服务web设置
配置---主机---创建主机
在相应的地址栏,填写你的监控主机信息,被监控主机名称(自定义)和IP
然后点击templates,搜索linux,添加弹出的Templates OS Linux模板,点击添加,然后更新即可
snmp配置
l # vim /etc/snmp/snmpd.conf
view systemview included .1.3.6.1.2.1.25.1.1 //找到这行,增加下面配置
view systemview included .1 // 这个是新增加的
proc mountd // 找到这些配置,把注释去掉
proc ntalkd 4
proc sendmail 10 1
disk / 10000
load 12 14 14
l 启动snmpd
l 测试数据获取
获取主机名
# snmpwalk -c public -v 2c 10.25.193.8 sysName // 使用名称
SNMPv2-MIB::sysName.0 = STRING: feecache2
# snmpwalk -c public -v 2c 10.25.193.8 .1.3.6.1.2.1.1.5.0 // 使用OID
SNMPv2-MIB::sysName.0 = STRING: feecache2
通过如上两种方式均可获取到数据,如上获取到得数据都是feecache2
获取服务器剩余内存
# snmpwalk -c public -v 2c 10.25.193.8 .1.3.6.1.4.1.2021.4.11.0
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 8565452 kB
# snmpwalk -c public -v 2c 10.25.193.8 memTotalFree
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 8565080 kB
l 报错处理
snmpwalk -v 2c localhost -c public .1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = No more variables left in this MIB View (It is past the end of the MIB tree)
因为默认没有包含这个节点,所以只要把这个节点包含进去就可以了
vim /etc/snmp/snmpd.conf
view all included .1.3.6.1.4.1.2021
服务器端web配置
配置---主机---创建主机
在相应的地址栏,填写你的监控主机信息,被监控主机名称(自定义)和IP
添加模版:
邮件发送
使用外部邮箱账号发送报警邮件
实现目的:
在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱。
使用外部邮箱账号发送报警邮件设置
一、关闭sendmail或者postfix
service sendmail stop #关闭
chkconfig sendmail off #禁止开机启动
service postfix stop
chkconfig postfix off
备注:
使用外部邮箱账号时,不需要启动sendmail或者postfix
如果在sendmail或者postfix启动的同时使用外部邮箱发送报警邮件,首先会读取外部邮箱
配置信息。
二、安装邮件发送工具mailx
yum install mailx #安装
CentOS 5.x 编译安装mailx,直接yum安装的mailx版本太旧,使用外部邮件发送会有问题。
yum remove mailx #卸载系统自带的旧版mailx
下载mailx:
http://nchc.dl.sourceforge.net/project/heirloom/heirloom-mailx/12.4/mailx-12.4.tar.bz2
tar jxvf mailx-12.4.tar.bz2 #解压
cd mailx-12.4 #进入目录
make #编译
make install UCBINSTALL=/usr/bin/install #安装
ln -s /usr/local/bin/mailx /bin/mail #创建mailx到mail的软连接
ln -s /etc/nail.rc /etc/mail.rc #创建mailx配置文件软连接
whereis mailx #查看安装路径
mailx -V #查看版本信息
报错处理:
openssl.c:108: error: expected declaration specifiers or ‘...’ before ‘STACK’
openssl.c: In function ‘ssl_select_method’:
openssl.c:215: warning: assignment discards qualifiers from pointer target type
openssl.c:217: warning: assignment discards qualifiers from pointer target type
[root@localhost mailx-12.4]# wget http://www.linuxfromscratch.org/patches/blfs/7.6/mailx-12.4-openssl_1.0.0_build_fix-1.patch
[root@localhost mailx-12.4]# patch -Np1 -i mailx-12.4-openssl_1.0.0_build_fix-1.patch
patching file makeconfig
patching file openssl.c
三、配置Zabbix服务端外部邮箱
vi /etc/mail.rc #编辑,添加以下信息
set from=15982257604@139.com smtp=smtp.139.com
set smtp-auth-user=15982257604@139.com smtp-auth-password=xxxxxx
set smtp-auth=login
:wq! #保存退出
echo "zabbix test mail" |mail -s "zabbix" wuzg@si-tech.com.cn
#测试发送邮件,标题zabbix,邮件内容:zabbix test mail,发送到的邮箱:wuzg@si-tech.com.cn
#这时候,邮箱wuzg@si-tech.com.cn 会收到来自15982257604@139.com的测试邮件
四、配置Zabbix服务端邮件报警
服务器上配置
编写邮件发送脚本sendmail.sh
cd /usr/local/zabbix/share/zabbix/alertscripts/ #进入zabbix默认存放脚本路径
vim sendmail.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh #sendmail.sh脚本修改所属用户和用户组
[root@logserver alertscripts] # chmod 755 /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh #sendmail脚本赋予执行权限
[root@logserver alertscripts] # ls -l /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh #查看sendmail.sh脚本信息
-rwxr-xr-x. 1 zabbix zabbix 154 Jan 7 05:12 /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
[root@logserver alertscripts] # vim /usr/local/zabbix/etc/zabbix_server.conf #配置zabbix_server.conf配置文件
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #这个修改成sendmail.sh脚本存放路径
[root@logserver alertscripts]# su - zabbix
[zabbix@logserver ~]$ /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh wuzg@si-tech.com.cn "test linux" "test" #zabbix用户执行sendmail.sh脚本看是否有权限
web介面配置
1、打开Zabbix
管理 ---- 报警媒介类型 ----- 创建媒介类型
2、名称可以随便自己定义 ----- 类型选择脚本 ----- 脚本名称输入上一步编写的发送邮件的脚本名称 ----
再添加以下3个参数,分别对应脚本需要的3个参数:收件人地址、主题、详细内容:
名称:Sendmail
类型:脚本
脚本名称:sendmail.sh
已启用:勾选
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2、设置Zabbix用户报警邮箱地址
管理 ---- 用户 ----- 选择admin用户。(自己创建一个用户也可以)
4、报警媒介 ---- 添加
类型:Sendmail
收件人:wuzg@si-tech.com.cn
其他默认即可,也可
以根据需要设置
状态:已启用
点击更新
权限设置(管理员用户不用修改,权限默认所有服务器,如果要分类权限需要在用户组进行控制)
3、设置Zabbix触发报警的动作
组态-动作-创建动作
动作 ---- 名称自定义 --- 设置一条新的触发条件 ---- 启用 ---- 添加。(触发条件需要根据实际情况设置)
触发器 似 unreachable for 5 minutes
#根据主机触发器 Template App Zabbix Agent: Zabbix agent on {HOST.NAME} is unreachable for 5 minutes 设置,主要监测zabbix_agentd客户端连接情况。
定义操作
名称:服务器宕机邮件
默认标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
定义恢复操作
恢复标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
4,测试
5,告警邮件
6,恢复邮件
安全加固
zabbix仅在内网访问,mysql仅在本机访问,所以通过设置iptables进行安全防护
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 10.25.193.0/24 -j ACCEPT
-A INPUT -s 10.25.119.0/24 -j ACCEPT
-A INPUT -s 10.25.245.0/24 -j ACCEPT
-A INPUT -s 10.25.118.5 -j ACCEPT
-A INPUT -s 221.176.9.121 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp -s 10.25.193.6 --dport 3306 -j ACCEPT
COMMIT