主要介绍ZABBIX安装以及mysql、oracle的监控配置、自定义的磁盘监控(discovery方式)
一、ZABBIX服务器端的安装
安装前准备
vim /etc/yum.repos.d/php.repo
[base]
name=CentOS-6 - Base - 163.com
baseurl=http://mirrors.163.com/centos/6/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
yum install mysql-dev gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xm
登录数据库,创建帐号和设置权限:
mysql -uroot -proot123
create database zabbix character set utf8;
grant all privileges on zabbix.* to zabbix_user@'10.100.105.%' identified by 'root123';
2.3安装zabbix服务
增加zabbix用户和组
#groupadd zabbix
#useradd -g zabbix -m zabbix
groupadd -g 201 zabbix
useradd -g zabbix -u 201 -m zabbix
cd /home/software/
wget ftp://10.100.105.83/app_source/zabbix-2.2.2.tar.gz > /dev/null 2>&1 || ERROR "下载zabbix"
tar xvf zabbix-2.2.2.tar.gz
cd zabbix-2.2.2/
导入数据库表
cd zabbix-2.2.2/database/mysql
mysql -uroot -proot123 zabbix < schema.sql
mysql -uroot -proot123 zabbix < images.sql
mysql -uroot -proot123 zabbix < data.sql
cd ../../zabbix-2.2.2/
./configure --prefix=/usr/local/software/zabbix-2.2.2/ --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy
make && make install
添加服务端口
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
修改server配置文件,添加zabbix数据库密码
vi /usr/local/software/zabbix-2.2.2/etc/zabbix_server.conf
PidFile=/tmp/zabbix_server.pid
DBName=zabbix
DBUser=zabbix_user
DBPassword=root123
ListenIP=10.100.105.207
修改Agentd配置文件,更改HOSTNAME为本机的hostname
vim /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
EnableRemoteCommands=1
Server=10.100.105.207
Hostname=s017pm
#启动服务端,某些版本或者系统要求以
zabbix用户启动,下同
/usr/local/software/zabbix-2.2.2/sbin/zabbix_server
/usr/local/software/zabbix-2.2.2/sbin/zabbix_agentd
启动的时候报错误:
[root@s017pm: conf]# /usr/local/software/zabbix-2.2.2/sbin/zabbix_server
error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
解决办法:
ln -s /usr/local/software/mysql/lib/libmysqlclient.so.18 /usr/lib64
#添加服务自启动
echo "/usr/local/software/zabbix/sbin/zabbix_server" >> /etc/rc.d/rc.local
echo "/usr/local/software/zabbix/sbin/zabbix_agentd" >> /etc/rc.d/rc.local
cp /home/software/zabbix-2.2.2/misc/init.d/tru64/zabbix_server /etc/init.d/
cp /home/software/zabbix-2.2.2/misc/init.d/tru64/zabbix_agentd /etc/init.d/
vim /etc/init.d/zabbix_server
DAEMON=DAEMON=/usr/local/software/zabbix-2.2.2/sbin/zabbix_server
vim /etc/init.d/zabbix_agentd
DAEMON=DAEMON=/usr/local/software/zabbix-2.2.2/sbin/zabbix_agentd
chkconfig --add zabbix_server
chkconfig --add zabbix_agentd
chkconfig zabbix_server on
chkconfig zabbix_agentd on
#建立存储目录
mkdir /var/www/html/zabbix
#拷贝网页前端文件到apache目录:
cp -R /home/software/zabbix-2.2.2/frontends/php/* /var/www/html/zabbix/
chown -R zabbix:zabbix /var/www/html/zabbix/
修改php参数:#php参数配置,按照zabbix的需求来.
vi /etc/php.ini
date.timezone = "Asia/Shanghai"
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
#使用sed命令来修改
sed -i "s@;date.timezone =@date.timezone = Asia/Shanghai@g" /etc/php.ini
sed -i "s@max_execution_time = 30@max_execution_time = 300@g" /etc/php.ini
sed -i "s@post_max_size = 8M@post_max_size = 32M@g" /etc/php.ini
sed -i "s@max_input_time = 60@max_input_time = 300@g" /etc/php.ini
sed -i "s@memory_limit = 128M@memory_limit = 128M@g" /etc/php.ini
sed -i "s@;mbstring.func_overload = 0@ambstring.func_overload = 2@g" /etc/php.ini
web页面配置,配置http访问好了后web登陆:http://ip/zabbix
zabbix的默认登陆账号是admin,密码是zabbix
如果更改IP,需要修改/var/www/html/zabbix/conf/zabbix.conf.php 中的mysql 地址
二、ZABBIX客户端安装
客户端(10.100.105.208):
#groupadd zabbix
#useradd -g zabbix -s /sbin/nologin zabbix
groupadd -g 201 zabbix
useradd -g zabbix -u 201 -s /sbin/nologin zabbix
tar xvf zabbix-2.2.2.tar.gz
cd zabbix-2.2.2/
./configure --prefix=/usr/local/software/zabbix-2.2.2/ --enable-agent
make && make install
#复制zabbix_agentd启动文件到/etc/init.d目录下
cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
chmod 755 /etc/init.d/zabbix_agentd
vim /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf
Server=10.100.105.207
ServerActive=10.100.105.207
UnsafeUserParameters=1
Include=/usr/local/software/zabbix-2.2.2/zabbix_agentd.conf.d/
Hostname=10.100.105.208
Timeout=10
#使用sed修改:
sed -i -e 's/Server=127.0.0.1/Server=10.100.105.207/g' -e 's/^ServerActive=127.0.0.1/ServerActive=10.100.105.207/g' -e 's/# UnsafeUserParameters=0/UnsafeUserParameters=1/g' -e 's/# Include=\/usr\/local\/etc\/zabbix_agentd.conf.d\//Include=\/usr\/local\/software\/zabbix-2.2.2\/etc\/zabbix_agentd.conf.d\//g' /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf
sed -i "s/Hostname=Zabbix server/Hostname=10.100.105.208/g" /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf
sed -i 's/^#Timeout=3/Timeout=10/g' /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf
三、磁盘监控
###创建脚本目录
mkdir -p /usr/local/software/zabbix-2.2.2/script
-----------------------------------------------
###创建监控io脚本
cat > /usr/local/software/zabbix-2.2.2/script/Disk_Static.sh << EOF
#!/bin/sh
##获取IO
IO=\`iostat -d -x 1 3 |grep \$1\`
echo "\$IO" |awk '{a=a+\$12}END{print a/3}'
EOF
-----------------------------------------------
###创建监控Io配置文件
cat > /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf.d/Disk_Static.conf << EOF
UserParameter=Disk_Static[*],/bin/sh /usr/local/software/zabbix-2.2.2/script/Disk_Static.sh \$1
EOF
测试item key
./bin/zabbix_get -s 10.100.105.208 -p 10050 -k "Disk_Static[dm-0]"
四、IO监控(discovery方式)
(1)自动寻找磁盘
disk_scan.sh文件内容:
more /usr/local/software/zabbix-2.2.2/script/disk_scan.sh
-
#!/bin/bash
-
#written by linengjiang
-
diskarray=(`cat /proc/diskstats |grep -E "\bdm-[0123456789]\b|\bxvd[abcdefg]\b"|grep -i "\b$1\b"|awk '{print $3}'|sort|uniq 2>/dev/n
-
ull`)
-
length=${#diskarray[@]}
-
printf "{\n"
-
printf '\t'"\"data\":["
-
for ((i=0;i<$length;i++))
-
do
-
printf '\n\t\t{'
-
printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
-
if [ $i -lt $[$length-1] ];then
-
printf ','
-
fi
-
done
-
printf "\n\t]\n"
-
printf "}\n"
(2)在zabbix_agentd.conf.d加入监控项(也可以写在zabbix_agentd.conf)
cat > /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf.d/disk_monitor.conf << EOF
UserParameter=io.scandisk[*],/bin/sh /usr/local/software/zabbix-2.2.2/script/disk_scan.sh \$1
EOF
(3)新建模板
Template:Templates_Disk_Static
(4)新建Discovery rules
Name:io_status_discovery
Type:Zabbix_agent
Key:io.scandisk
Update interval(in sec):30
(5)新建好discovery rule之后,就可以开始写item prototypes了,下面是一个例子avgqu-sz(平均I/O队列长度)
Name:IO_avgqu-sz on $1
Type:Zabbix_agent
Key:io.avgqu-sz[{#DISK_NAME}]
Type of information:Numeric(float)
Units:length
(6) 在建立好item之后,zabbix_agentd.conf.d/disk_monitor.conf中也要写上相应的UserParameters
cat > /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf.d/disk_monitor.conf << EOF
UserParameter=io.scandisk[*],/bin/sh /usr/local/software/zabbix-2.2.2/script/disk_scan.sh \$1
UserParameter=io.rps[*],cat /tmp/iostat_output|grep "\b\$1\b"|awk '{a=a+\$\$4;b+=1}END{print(a/b)}'
UserParameter=io.wps[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$5;b+=1}END{print(a/b)}'
UserParameter=io.rMBs[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$6;b+=1}END{print(a/b)}'
UserParameter=io.wMBs[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$7;b+=1}END{print(a/b)}'
UserParameter=io.avgrq-sz[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$8;b+=1}END{print(a/b)}'
UserParameter=io.avgqu-sz[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$9;b+=1}END{print(a/b)}'
UserParameter=io.await[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$10;b+=1}END{print(a/b)}'
UserParameter=io.svctm[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$11;b+=1}END{print(a/b)}'
UserParameter=io.util[*],cat /tmp/iostat_output|grep "\b\$1\b" |awk '{a=a+\$\$12;b+=1}END{print(a/b)}'
EOF
disk_monitor.conf文件内容:
more /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf.d/disk_monitor.conf
UserParameter=io.scandisk[*],/bin/sh /usr/local/software/zabbix-2.2.2/script/disk_scan.sh $1
UserParameter=io.rps[*],cat /tmp/iostat_output|grep "\b$1\b"|awk '{a=a+$$4;b+=1}END{print(a/b)}'
UserParameter=io.wps[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$5;b+=1}END{print(a/b)}'
UserParameter=io.rMBs[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$6;b+=1}END{print(a/b)}'
UserParameter=io.wMBs[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$7;b+=1}END{print(a/b)}'
UserParameter=io.avgrq-sz[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$8;b+=1}END{print(a/b)}'
UserParameter=io.avgqu-sz[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$9;b+=1}END{print(a/b)}'
UserParameter=io.await[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$10;b+=1}END{print(a/b)}'
UserParameter=io.svctm[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$11;b+=1}END{print(a/b)}'
UserParameter=io.util[*],cat /tmp/iostat_output|grep "\b$1\b" |awk '{a=a+$$12;b+=1}END{print(a/b)}'
(7)新建graph prototype
Name:IO_graph on {#DISK_NAME}
With:900
Heigth:200
Item:
(8)采集io监控数据
#zabbix_agentd io
*/2 * * * * root "iostat -x -m 2 5 >/tmp/iostat_output"
(9) zabbix_get -s 10.50.8.19 -k 'io.scandisk'
./bin/zabbix_get -s 10.50.8.38 -k 'io.util[dm-0]'
五、监控端口服务
cat > /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf.d/Check_Port.sh<< EOF
#!/bin/sh
##监控服务服务
ERROR(){
echo 0
exit
}
netstat -nltp | grep $1 > /dev/null || ERROR
echo 1
EOF
#修改权限
chown -R zabbix.zabbix /usr/local/software/zabbix-2.2.2
#在iptables中放行10050和10051端口
sed -i 's/COMMIT/##zabbix\n-A RH-Firewall-1-INPUT -p tcp --dport 10050 -j ACCEPT\nCOMMIT/g' /etc/sysconfig/iptables
/etc/init.d/iptables restart
vim /etc/init.d/zabbix_agentd
#DAEMON=/usr/local/sbin/zabbix_agentd
DAEMON=/usr/local/software/zabbix-2.2.2/sbin/zabbix_agentd
使用sed修改:
sed -i 's/DAEMON=\/usr\/local\/sbin\/zabbix_agentd/#DAEMON=\/usr\/local\/sbin\/zabbix_agentd\nDAEMON=\/usr\/local\/software\/zabbix-2.2.2\/sbin\/zabbix_agentd/g' /etc/init.d/zabbix_agentd
/etc/init.d/zabbix_agentd start
六、自定义发邮件脚本
配置发件人和SMTP服务器
more /etc/mail.rc
set from=itmonitor@xxx.com
set smtp=smtp.xxx.com
set smtp-auth-user=itmonitor@xxx.com
set smtp-auth-password=dsdffdDss
set smtp-auth=login
指定脚本目录:
vim zabbix_server.conf
AlertScriptsPath=/usr/local/software/zabbix-2.2.2/script/alertscripts
编写发邮件脚本:
more /usr/local/software/zabbix-2.2.2/script/alertscripts/mail.sh
#!/bin/bash
mailx -s "$subject" $to
七、配置自带的mysql监控模板
cp /home/software/zabbix-2.2.2/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/software/zabbix-2.2.2/etc/zabbix_agentd.conf.d/
根据userparameter_mysql.conf 里的说明建立“.my.cnf”文件,并修改userparameter_mysql.conf里的"HOME="路径,指向“.my.cnf”文件所在目录。
[root@s017pm: script]# more .my.cnf
[mysql]
host = 10.100.105.207
user = root
password = root123
socket = /usr/local/software/mysql/mysql.sock
[mysqladmin]
host = 10.100.105.207
user =
zabbix
password =
zabbix
socket = /usr/local/software/mysql/mysql.sock
在mysql上创建用户
GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY '
zabbix';
FLUSH PRIVILEGES;
zabbix server端测试:
./zabbix_get -s 10.100.105.207 -p 10050 -k "mysql.size[all]"
八、oracle orabbix 监控
http://www.smartmarmot.com/wiki/index.php/Orabbix#Requirements
wget http://nchc.dl.sourceforge.net/project/orabbix/orabbix-1.2.3.zip
---more config.props |grep -v "#"-------------------------------------------------------------
ZabbixServerList=ZabbixServer1
ZabbixServer1.Address=10.100.105.207
ZabbixServer1.Port=10051
OrabbixDaemon.PidFile=./logs/orabbix.pid
OrabbixDaemon.Sleep=300
OrabbixDaemon.MaxThreadNumber=100
DatabaseList=DB1,DB2
DatabaseList.MaxActive=10
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1
DB1.Url=jdbc:oracle:thin:@10.100.105.207:1521:bst_dev
DB1.User=zabbix
DB1.Password=zabbix
DB1.MaxActive=10
DB1.MaxWait=100
DB1.MaxIdle=1
DB1.QueryListFile=./conf/query.props
DB2.Url=jdbc:oracle:thin:@10.100.105.208:1521:bsttest
DB2.User=zabbix
DB2.Password=zabbix
DB2.QueryListFile=./conf/query.props
-----------------------------------------------------------------
cp /usr/local/software/zabbix-2.2.2/script/orabbix-1.2.3/init.d/orabbix /etc/init.d/
chmod +x /etc/init.d/orabbix
chmod +x /usr/local/software/zabbix-2.2.2/script/orabbix-1.2.3/run.sh
#在oracle数据库中创建zabbix用户
create user zabbix identified by "bstzabbix12657" default tablespace users temporary tablespace temp profile default account unlock;
grant alter session to zabbix;
grant connect to zabbix;
grant select any dictionary to zabbix;
exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ZABBIX', is_grant => true, privilege => 'resolve');
exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
commit;
zabbix服务端操作
1、导入模板。模板在/usr/local/software/zabbix-2.2.2/script/orabbix-1.2.3/template.
Orabbix_export_full.xml 全部导入(图表 监控项 触发器)
Orabbix_export_graphs.xml 图表
Orabbix_export_items.xml 监控项
Orabbix_export_triggers.xml 触发器
2、添加主机(名字必须跟config.props里面定义的名称的配置保持一致)
3、关联模板
4、结果演示
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10995764/viewspace-2124876/
,如需转载,请注明出处,否则将追究法律责任。