ZABBIX安裝以及監控磁碟、mysql、oracle配置

gxlineji發表於2016-09-13


主要介紹ZABBIX安裝以及mysql、oracle的監控配置、自定義的磁碟監控(discovery方式)


一、ZABBIX伺服器端的安裝

安裝前準備
vim /etc/yum.repos.d/php.repo
[base]
name=CentOS-6 - Base - 163.com
baseurl=
#mirrorlist=
gpgcheck=1
gpgkey=

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登陸:
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

點選(此處)摺疊或開啟

  1. #!/bin/bash
  2. #written by linengjiang
  3. 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
  4. ull`)
  5. length=${#diskarray[@]}
  6. printf "{\n"
  7. printf '\t'"\"data\":["
  8. for ((i=0;i<$length;i++))
  9. do
  10. printf '\n\t\t{'
  11. printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
  12. if [ $i -lt $[$length-1] ];then
  13. printf ','
  14. fi
  15. done
  16. printf "\n\t]\n"
  17. 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 監控


wget

---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部落格 ” ,連結:http://blog.itpub.net/10995764/viewspace-2124876/,如需轉載,請註明出處,否則將追究法律責任。

相關文章