官方网站:http://www.zabbix.com/ The Enterprise-class Monitoring Solution for Everyone
企业级监控解决方案
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
安装与配置简单,学习成本低
支持多语言(包括中文)
免费开源
自动发现服务器与网络设备
分布式监视以及WEB集中管理功能
可以无agent监视
用户安全认证和柔软的授权方式
通过WEB界面设置或查看监视结果
email等通知功能
CPU负荷
内存使用
磁盘使用
网络状况
端口监视
日志监视
插件开发自定义
Zabbix Server和Zabbix agent
Zabbix Server可以通过SNMP,Zabbix agent,Ping,端口监视等你方法提供对远程服务器/网络状态的监视,数据收集功能,可以在运行Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows多平台。
Zabbix Agent安装在需要被监控的目标服务器上,主要完成对硬件信息与操作系统有关的内存,CPU等你信息收集。
Zabbix Server可以单独监视远程服务器的服务状态,同时也可以与Zabbix Agent结合。可以轮询Zabbix Agent主动接收监视数据(trapping传递 方式),同时还可以被动接收Zabbix Agent发送的数据。
Zabbix支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理Zabbix,通过C/S模式采集数据,通过B/S模式在Web端展示和配置!Agent监控端口10050
服务端安装Zabbix Server和Zabbix Agent两个服务,客户端只安装Zabbix Agent一个服务,监控原理就是Zabbix Agent服务将从系统中获取的相关数据传送给Zabbix Server,然后Zabbix Server服务奖数据分析之后以PHP页面展示出来!
php-5.6.13 libmcrypt-2.5.8
mysql-5.6.26
nginx-1.8.0
zabbix-2.4.6
我们需要先构建LNMP的环境,因为Zabbix通过PHP页面展示
首先搭建LNMP的环境,如果有这个环境可以忽略
[root@XueGod63 ~]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre-devel ncurses-devel ----mysql安装需要 //zlib:给Nginx提供gzip模块,需要的支持;OPenssl提供SSL功能;PCRE,地址重写
安装pcre使用tar -zxvf pcre-8.36.tar.gz进行解压。
3. 运行 chmod -R 777 /pcre-8.36 对当前文件夹授予全部读写权限。
4. 切换到/pcre-8.36目录下,运行 ./configure 进行pcre初始化配置,会在控制台打印出一大堆的输出信息。
[root@XueGod63 ~]# tar xvf nginx-1.8.0.tar.gz -C /usr/local/src/ ; cd /usr/local/src/nginx-1.8.0
[root@XueGod63 nginx-1.8.0]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module
[root@XueGod63 nginx-1.8.0]# make && make install ; cd
[root@XueGod63 ~]# useradd -u 8001 -M -s /sbin/nologin nginx
[root@XueGod63 ~]# vim /usr/local/nginx/conf/nginx.conf
#user nobody;
user nginx nginx; #此行添加
…… #下面这段内容,需要去掉注释,然后修改script_filename
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
[root@XueGod63 ~]# /usr/local/nginx/sbin/nginx
[root@XueGod63 ~]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
[root@XueGod63 ~]# yum remove -y mysql mysql-devel mysql-server
[root@XueGod63 ~]# tar xvf mysql-5.6.26.tar.gz -C /usr/local/src/ ; cd /usr/local/src/mysql-5.6.26
[root@XueGod63 mysql-5.6.26]# useradd -u 8003 -M -s /sbin/nologin mysql
[root@XueGod63 mysql-5.6.26]# yum install -y cmake
[root@XueGod63 mysql-5.6.26]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_USER=mysql
[root@XueGod63 mysql-5.6.26]# make -j 4 ; make install
[root@XueGod63 mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql/
[root@XueGod63 mysql-5.6.26]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
[root@XueGod63 mysql-5.6.26]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/
[root@XueGod63 mysql-5.6.26]# cd ; vim /etc/init.d/mysql.server //修改下面两项
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
[root@XueGod63 ~]# chkconfig mysql.server on
[root@XueGod63 ~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
[root@XueGod63 ~]# ln -s /usr/local/mysql/bin/* /usr/bin/
[root@XueGod63 ~]# service mysql.server restart
[root@XueGod63 ~]# /usr/local/mysql/bin/mysql_secure_installation //顺便密码设置123456
[root@XueGod63 ~]# mysql -uroot -p123456 //测试OK
[root@XueGod63 ~]# tar xvf libmcrypt-2.5.8.tar.bz2 -C /usr/local/src/
[root@XueGod63 ~]# cd /usr/local/src/libmcrypt-2.5.8/
[root@XueGod63 libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt
[root@XueGod63 libmcrypt-2.5.8]# make ; make install ; cd
[root@XueGod63 ~]# tar xvf php-5.6.13.tar.bz2 -C /usr/local/src/
[root@XueGod63 ~]# cd /usr/local/src/php-5.6.13/
[root@XueGod63 php-5.6.13]# yum install -y php-pear libjpeg-devel libxml2 libxml2-devel openssl openssl-devel curl-devel libpng libpng-devel freetype-devel
ln -s /usr/lib64/libssl.so /usr/lib/
[root@XueGod63 php-5.6.13]# echo "/usr/local/mysql/lib/" >> /etc/ld.so.conf
[root@XueGod63 php-5.6.13]# echo "/usr/local/libmcrypt/lib" >> /etc/ld.so.conf
[root@XueGod63 php-5.6.13]# ldconfig
[root@XueGod63 php-5.6.13]# echo "ldconfig" >> /etc/rc.local
[root@XueGod63 php-5.6.13]# ./configure --prefix=/usr/local/php -with-config-file-path=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-mcrypt=/usr/local/libmcrypt --with-gettext
#若不加--with-gettext,安装zabbix会有一个php gettext no fail的错误
[root@XueGod63 php-5.6.13]# make ; make install
[root@XueGod63 php-5.6.13]# cp /usr/local/src/php-5.6.13/php.ini-production /usr/local/php/php.ini
[root@XueGod63 php-5.6.13]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@XueGod63 php-5.6.13]# cp /usr/local/src/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@XueGod63 php-5.6.13]# chmod +x /etc/init.d/php-fpm ; cd
[root@XueGod63 ~]# chkconfig --add php-fpm
[root@XueGod63 ~]# chkconfig php-fpm on
[root@XueGod63 ~]# echo "" > /usr/local/nginx/html/index.php
在这里要特别注意nginx.conf配置文件:修改fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; $document_root 代表当前请求在root指令中指定的值。
[root@XueGod63 ~]# service php-fpm start
Zabbix需要数据库的支持,而却Zabbix已经自带了数据库结构,images数据库和表数据等相关内容
[root@XueGod63 ~]# mysql -uroot -p
mysql> create database zabbix;
mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; //zabbix用户授权
mysql> exit
[root@XueGod63 ~]# tar xvf zabbix-2.4.6.tar.gz -C /usr/local/src/
[root@XueGod63 ~]# cd /usr/local/src/zabbix-2.4.6/
导入数据库,注意顺序,否则会报错
[root@XueGod63 zabbix-2.4.6]# mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql
[root@XueGod63 zabbix-2.4.6]# mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql
[root@XueGod63 zabbix-2.4.6]# mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql
[root@XueGod63 zabbix-2.4.6]# yum install -y net-snmp-devel //net-snmp-config依赖
[root@XueGod63 zabbix-2.4.6]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl
--prefix= #指定路径
--enable-server #Server支持
--enable-agent #支持Zabbix客户端
--with-mysql #指定MySql库可以选择制定路径mysql_config,mysql_config是命令,用于编译mysql客户端程序
--with-net-snmp #支持snmp协议,需要安装net-snmp-devel包
--with-libcurl #支持CURL功能,libcurl主要功能就是用不同的协议连接不同的服务器,libcurl当前支持的协议有http,https,ftp,gopher,telent,dict,file,和ldap协议
其他参数:
--enable-proxy 指的是支持zabbix代理服务器,zabbix proxy是一个监控代理服务器,它收集到监控数据,选存放在缓冲区,保存的时间可以通过配置文件设定,然后再传送的zabbix server。监控代理服务需要一个独立的数据库。
用zabbix proxy的好处:进程监控,当监控文遏制通讯不方便的时候,当通讯上千台设备的时候,使用zabbix proxy可以简化维护分布式监控,降低zabbix server的负负载
看到如下信息,预编译就没有什么问题
……
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
[root@XueGod63 zabbix-2.4.6]# make install ; cd //上面的提示,没有make步骤,直接install
[root@XueGod63 ~]# ls /usr/local/zabbix/ //编译成功,产生如下目录
bin etc lib sbin share
[root@XueGod63 ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
DBHost=localhost #默认注释掉了,直接取消注释即可
DBName=zabbix #数据库用户,我们授权的用户也是zabbix
DBUser=zabbix #默认是root,我们授权的用户是zabbix
DBPassword=zabbix #密码我们授权的也是zabbix
[root@XueGod63 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=127.0.0.1 #默认监控服务器自己,这三行不用改
ServerActive=127.0.0.1
Hostname=Zabbix server
UnsafeUserParameters=1 #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
[root@XueGod63 ~]# useradd -u 8005 -M -s /sbin/nologin zabbix //如果zabbix用户不存在,将以root运行,新建之后,如果zabbix存在,那么久直接可以用zabbix运行
[root@XueGod63 ~]# /usr/local/zabbix/sbin/zabbix_server //直接运行
[root@XueGod63 ~]# echo /usr/local/zabbix/sbin/zabbix_server >> /etc/rc.local //开机启动
[root@XueGod63 ~]# netstat -antup | grep zabbix //zabbix server运行端口10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 37568/zabbix_server
如果这里没有端口显示,则需要注册端口
这里要留意看zabbix_server.log 日志信息
[root@XueGod63 ~]# vim /etc/services //末尾添加下面这几行
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
默认配置文件没有写入到我们的Nagix的配置文件中,也就是不能加载到我们的zabbix页面目录
[root@XueGod63 ~]# cp -r /usr/local/src/zabbix-2.4.6/frontends/php/* /usr/local/nginx/html/
[root@XueGod63 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm; #找到此行内容,添加index.php
}
[root@XueGod63 ~]# /usr/local/nginx/sbin/nginx -s reload ; /etc/init.d/php-fpm restart
浏览器输入:http://192.168.1.63 如图,下一步Next
开始检查环境,如图,发现很多环境不符合条件
编辑php.ini文件,修改环境
[root@XueGod63 ~]# vim /usr/local/php/php.ini
post_max_size = 16M #修改
max_execution_time = 300 #修改
max_input_time = 300 #修改
date.timezone = Asia/Shanghai #此行有注释,去注释并修改
always_populate_raw_post_data = -1 #此行取消注释即可
[root@XueGod63 ~]# /etc/init.d/php-fpm restart
刷新页面
下一步:
下面啊 一部不用管,直接下一步
下一步:
写入失败,直接down这个配置文件,然后上传上去
[root@XueGod63 ~]# mv zabbix.conf.php /usr/local/nginx/html/conf/
然后在点击Retry
点击Finish,完成安装!
登陆之后我们修改语言
默认用户名和密码分别问admin,zabbix
点击右上角,,Profile,然后选择语言
然后Update即可,页面变为中文
如果所示,可到我们当前监控的本机(默认没有启动,点击后面红色的停用,则启用)
Nginx服务启动
Php-fpm服务启动
Mysql服务器启动
Zabbix_server服务启动
我们用XueGod64作为客户端,使用Zabbix Server监控XueGod64
[root@XueGod64 ~]# yum install -y curl curl-devel net-snmp net-snmp-devel perl-DBI //解决依赖
[root@XueGod64 ~]# useradd -u 8001 -M -s /sbin/nologin zabbix
[root@XueGod64 ~]# tar xvf zabbix-2.4.6.tar.gz -C /usr/local/src/
[root@XueGod64 ~]# cd /usr/local/src/zabbix-2.4.6/
[root@XueGod64 zabbix-2.4.6]# ./configure --prefix=/usr/local/zabbix --enable-agent
//被监控端只需要部署agnet
[root@XueGod64 zabbix-2.4.6]# make install ; cd
[root@XueGod64 ~]# vim /etc/services //注册端口
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
[root@XueGod64 ~]# grep "chkconfig" /usr/local/src/zabbix-2.4.6/ -R -color//查看有chkconfig的文件
/usr/local/src/zabbix-2.4.6/misc/init.d/fedora/core5/zabbix_agentd
/usr/local/src/zabbix-2.4.6/misc/init.d/fedora/core5/zabbix_server
/usr/local/src/zabbix-2.4.6/misc/init.d/fedora/core/zabbix_agentd
/usr/local/src/zabbix-2.4.6/misc/init.d/fedora/core/zabbix_server
[root@XueGod64 ~]# cp /usr/local/src/zabbix-2.4.6/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d
[root@XueGod64 ~]# vim /etc/init.d/zabbix_agentd //上一步生成了启动脚本,然后现在编辑脚本
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd" #修改此行
[root@XueGod64 ~]# chkconfig --add zabbix_agentd
[root@XueGod64 ~]# chkconfig zabbix_agentd on
拓展:core和core5里面的文件都可以实现zabbix代理启动,core里面是测试版本,core5是稳定版本
[root@XueGod64 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf //客户端操作
Server=192.168.1.63#zabbix server地址,可以多个,用,隔开
ServerActive=192.168.1.63 #主动检查的意思,主动检查手机的数据的数据发送给Zabbix Server
Hostname=XueGod64
UnsafeUserParameters=1
[root@XueGod64 ~]# /etc/init.d/zabbix_agentd restart
[root@XueGod64 ~]# netstat -antup | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9683/zabbix_agentd
[root@XueGod63 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.1.64 -p10050 -k system.uname
//可以获取对方系统版本则证明没有问题
[root@XueGod63 ~]# cp /usr/local/src/zabbix-2.4.6/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@XueGod63 ~]# vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix #修改此行内容为zabbix的安装位置
[root@XueGod63 ~]# chkconfig --add zabbix_agentd
[root@XueGod63 ~]# chkconfig zabbix_agentd on
[root@XueGod63 ~]# /etc/init.d/zabbix_agentd restart //可以监控自己,也要启动服务
[root@XueGod63 ~]# netstat -antup | grep zabbix //两者之间监控端口不一样
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 51645/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 10786/zabbix_server
监控自己使用10050端口,监控对方使用的是10051端口
进入添加主机的页面
注意:Hostname和我们在Agentd里面填写的相同,显示名可以不一样
添加模板
选择Template OS Linux,点击进去
在主机模板位置,后面选择Linux Server是,然后啊XueGod64移动到主机/模板中
然后查看我们能获取了那些内容
发现没有办法看到硬盘,等想干信息,因为默认系统自动发现配置是1小时每次,我们可以改为其他时间:
点击探索规则,编辑规则
改为10s探索一次即可
然后在查看我们能不能看到硬盘相关信息
查看硬盘警高值,默认是20%
修改触发值
选择Templates OS Linux,选择探索规则
然后选择触发器类型,下面有一个Free Disk Space is less than 20% on volume值,点击这个就可以修改值了,点击修改为15%
返回查看
修改内存警高值
组态-模板- Template OS Linux-触发器,默认是20M,我们修改为100M
修改保存之后
测试:在XueGod64上读取文件占用空间
[root@XueGod64 ~]# dd if=/dev/zero of=/root/a.txt bs=1M count=10240 //根据需求读取
组态-模板- Template OS Linux
最终图形颜色
zabbix_agent.conf是用超级服务(xinetd)的方式来启动的,被动检查,只有Server说检查的时候才建材
zabbix_agentd.conf是以独立进程的方式来启动的,一般使用这个来做配置,自动检查,自动提交
zabbix_server.conf Server启动配置文件,只有一个
zabbix_get 是Zabbix 中的一个程序,用于Zabbix-Server 到Zabbix-Agent 的数据获取,通常可以用来检测验证Agent 的配置是否正确。它的使用方法如下
zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key>
-h:远程Zabbix-Agent 的IP 地址或者是主机名。
-p:远程Zabbix-Agent 的端口。
-I:本机出去的IP 地址,用于一台机器中有多个网卡的情况。
-k:获取远程Zabbix-Agent 数据所使用的Key。
[expmple@~]# zabbix_get -s 192.168.1.64 -k system.uname
zabbix_sender 与get相反,用来发送Zabbix服务器处理性能数据。该工具通常用于长时间运行的用户脚本,用于定期发送可用性和性能数据。使用方法如下
zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i <file> -r} [-c <file>]
参数说明:
-c --config <file> 配置文件绝对路径
-z --zabbix-server <server> zabbix server的IP地址
-p --port <server port> zabbix server端口.默认10051
-s --host <hostname> 主机名,zabbix里面配置的主机名(不是服务器的hostname),不能使用ip地址
-I --source-address <IP address> 源IP
-k --key <key> 监控项的key
-o --value <key value> key值
-i --input-file <input file> 从文件里面读取hostname、key、value 一行为一条数据,使用空格作为分隔符,如果主机名带空格,那么请使用双引号包起来
-T --with-timestamps 一行一条数据,空格作为分隔符: <hostname> <key> <timestamp> <value>,配合 --input-file option,timestamp为unix时间戳
-r --real-time 将数据实时提交给服务器
-v --verbose 详细模式, -vv 更详细
zabbix_agent 客户端依赖超级服务的启动脚本
zabbix_agentd 客户端独立服务启动脚本
zabbix_server 启动脚本
关于页面介绍:http://waringid.blog.51cto.com/65148/945352/
Key值:自定义值,Zabbix自带了一部分key值,下面是一些常用的
zabbix的内置了很多key,如:
1、监控进程
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k “net.tcp.service[http]”
2、监控端口
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k “net.tcp.port[,80]” 结果:1存在,0不存在;
3、进程数量
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k “proc.num[]”
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k “proc.num[httpd]”
4、执行命令
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k “system.run[curl -s “http://127.0.0.1/php-fpm-uuzu-status” | grep ‘idle processes’ | awk ‘{print $3;}’]”
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k “system.run[ps auxw | grep ‘httpd’ | grep -v ‘grep’ -c]”
5、其他
vm.memory.size[available]
vfs.file.cksum[/etc/passwd]
system.cpu.switches
system.cpu.num
system.cpu.util[,user]
system.cpu.util[,nice]
system.cpu.util[,system]
system.cpu.util[,iowait]
system.cpu.util[,idle]
system.cpu.util[,interrupt]
system.cpu.util[,steal]
system.cpu.util[,softirq]
system.swap.size[,free]
system.swap.size[,pfree]
system.boottime
system.localtime
system.hostname
system.cpu.intr
kernel.maxfiles
kernel.maxproc
system.users.num
proc.num[]
proc.num[,,run]
system.cpu.load[percpu,avg1]
system.cpu.load[percpu,avg5]
system.cpu.load[percpu,avg15]
system.uname
system.uptime
vm.memory.size[total]
system.swap.size[,total]
net.tcp.service[ftp,,155]
net.tcp.service[http]
net.tcp.service.perf[http,,8080]
net.tcp.service[service,, ]
怎么自定义一些key:
要先启用自定义key,需要在客户端的配置文件zabbix_agentd.conf中启用UnsafeUserParameters=1参数,然后在配置文件的最下面来定义key,如:
UnsafeUserParameters=0改为 UnsafeUserParameters=1并去掉前面的注释符
UserParameter=改为UserParameter=aaa.bbb[*], /usr/local/script/monitor.sh $1 $2 …
说明: aaa.bbb[*] —zabbix服务器添加监控信息时需要用到的key值,
格式:aaa.bbb[*](例:system.file.size[*])
/usr/local/script/monitor.sh —-监控脚本绝对路径
为了便于灵活监控,有时脚本需要传入参数,此参数可从zabbix服务器端传入,所有参数按顺序分别从$1-$9表示
注: (1)若无需传入参数,则$1-$9可省略
(2)该自定义脚本可由zabbix服务器控制收集数据的频率(如:每30s运行一次),无需再添加计划任务
(3)以上参数请根据实际情况填写,并注意去除参数前注释符(#)
(4)注意在key值和后面的脚本之间有个逗号隔开
http://www.zabbix.org/wiki/Main_Page
https://github.com/zabbix/zabbix-community-repos 各种模板
http://www.douglas.wiki.br/doku.php?id=en:installing_and_configuring_zabbix
上面给出部分网站去寻找脚本,有能力的可以自己写,我们可以借助别人的搅拌,这些脚本大多数是遵循GPL的协议
下载一个脚本之后,你要分析下脚本的运行环境,这几脚本大多数是个人缩写,每个人的运行环境不一样,所以你可以
用VIM打开分析一下,有的是python,有的是ruby写的,脚本拿到手需要改里面的东西!
如上图脚本,第一个是执行脚本,我们先对执行脚本一些必要操作,我们使用XueGod64作为apache Server
[root@XueGod64 ~]# mv check_apache /usr/local/zabbix/bin/
[root@XueGod64 ~]# cd /usr/local/zabbix/bin/ ; chmod +x check_apache //脚本可执行权限
[root@XueGod64 bin]# vim check_apache //脚本需要我们改动的东西
……
126 rval=$?;;
127 'version')
128 ApacheVersion=$(/usr/sbin/httpd -v 2> /dev/null | head -n 1 | awk '{print $3}' | cut -d '/' -f 2 | tail -n 1)
129 echo "$ApacheVersion"
130 exit $rval;;
……
#在128行,我们这里使用yum安装的apache,所以我们的版本获取方式是httpd命令,如果你用源码编译,需要指定绝对路径
第二个文件就是我们改动和添加到主agentd配置文件的内容
[root@XueGod64 bin]# vim ../etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #此行启用并修改
[root@XueGod64 bin]# cd
[root@XueGod64 ~]# mv conf-apache.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@XueGod64 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/conf-apache.conf //修改此文件
UserParameter=apache[*],/usr/local/zabbix/bin/check_apache \$1
[root@XueGod64 ~]# service zabbix_agentd restart
[root@XueGod64 ~]# yum install httpd -y
[root@XueGod64 ~]# vim /etc/httpd/conf/httpd.conf //末尾添加这一段
<IfModule mod_status.c>
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Uncomment and change the "192.0.2.0/24" to allow access from other hosts.
#
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1 ::1
# Allow from 192.0.2.0/24
Location>
# Keep track of extended status information for each request
ExtendedStatus On
# Determine if mod_status displays the first 63 characters of a request or
# the last 63, assuming the request itself is greater than 63 chars.
# Default: Off
#SeeRequestTail On
<IfModule mod_proxy.c>
# Show Proxy LoadBalancer status in mod_status
ProxyStatus On
IfModule>
IfModule>
[root@XueGod64 ~]# service httpd restart ; cd /usr/local/zabbix/bin/
[root@XueGod64 bin]# ./check_apache Uptime //使用-h或直接回车,有帮助出现
27
导入模板
选择模板Template_App_Apache_Service.xml,导入
模板应用
数据过滤
选择XueGod64和Apache
点开Apache
然后去http://192.168.1.64打开多刷页面
然后随便点开有个变动的图,可以看到
[root@XueGod63 ~]# yum install postfix //安装postfix
[root@XueGod63 ~]# vim /etc/postfix/main.cf //修改下面行
myhostname = XueGod63
mydomain = XueGod63
myorigin = $myhostname
inet_interfaces = all
mynetworks = 127.0.0.0/8, 192.168.1.0/24
[root@XueGod63 ~]# service postfix restart
注册一个测试邮箱:163的即可
打开zabbix页面:
填写自己的主机名即可
配置用户
点击示警媒介--添加--选择Zabbix Email---输入收件人地址---添加
设置触发报警动作,组态-动作-创建动作
内容如下
名称:Action-Email
默认接收人:故障{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}
已启用:打钩
不要更新,先切换到如图:
点击添完成,先测试能否收到测试邮件
[root@XueGod63 ~]# mail -s "[email protected]" ******************@163.com
hahahahahahahah
ahsdfohasdfoasdfasd
EOT #Ctrl + D
测试,关闭zabbix客户端服务zabbix_agentd
[root@XueGod64 ~]# service zabbix_agentd stop
结果:
[root@XueGod64 ~]# service zabbix_agentd start
延迟太大,只要看到动作后面是正常,即可,我测试的时候延迟有15分钟左右,最快也要5分钟左右
http://www.zabbix.com/download.php 下载Windows版本Agentd
提取文件,修改里面的conf目录下的zabbix_agent.win.conf(用写字板打开)
Server=192.168.1.63
ServerActive=192.168.1.63
Hostname=Windows host
然后在cmd命令行中:管理员运行cmd.exe
C:\Users\LinuxStury-Vir\Desktop\zabbix_agents_2.4.1.win\bin\win32\zabbix_agentd.exe --config "C:\Users\LinuxStury-Vir\Desktop\zabbix_agents_2.4.1.win\conf\zabbix_agentd.win.conf" --install
出现下面的:,表示简装成功
zabbix_agentd.exe [3368]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [3368]: event source [Zabbix Agent] installed successfully
开始-运行-services.msc--找到zabbix Agent,启动服务
然后在页面添加:
组态-主机-创建主机
模板:
查看监控结果
Windows下删除agent服务: 1:net stop “zabbix agent” 2: sc delete “zgent delete”
下面是一些报错常见案例处理:cannot send list of active checks to [127.0.0.1]: host [Zabbix server] not found
出现该错误的原因是一般是zabbix_agentd.conf里面的Hostname和前端zabbix web里面的配置不一样所造成的,即在zabbix web页面Monitoring->Configuration->Hosts 页面的Name和zabbix_agentd.conf里面的Hostname要一样。