準備環境介紹php
文檔簡介想要實現的功能爲在zabbix服務器端再增長orabbix插件以此訪問oracle數據庫進行監控操做。html
環境介紹CentOS 7 zabbix 2.4.2 。java
yum介紹因公司電腦沒法訪問外網則進行了本地yum源的配置。mysql
可自行根據php-common下載相應的rpm包或者去個人網盤瞅瞅有木有你們須要的地址以下
連接http://pan.baidu.com/s/1skGbrat 密碼n9p3linux
實施過程介紹
1.首先是LAMP的搭建其中Linux環境搭建此處很少介紹MySQL數據庫的搭建可參考上篇文檔ios
搭建 Apache 和 PHP前面也提到因沒有外網只能使用CentOS 7提供的包而後mount到我本地
yum 源的配置
vi /etc/yum.repo.d/CentOS-Local.repoweb
name=This is a local repo source for lamp
baseurl=file:///mnt/Package
gpgcheck=0
enabled=1
sql
:x -- 保存退出數據庫
ps將yum.repo.d下使用不到的repo文件註釋使其失效apache
vim /etc/fstab
/dev/sr0 /mnt/Package iso9660 default 0 0
:x -- 保存退出
mount -a 從新掛載
=======================至此本地yum源配置完成================
修改主機名配置hostnamectl set-hostname 確認修改的名字
修改防火牆配置vi /etc/selinux/config 修改成disabled
# systemctl disable firewalld.service
# systemctl stop firewalld.service
修改時區配置timedatectl set-timezone Asia/Shanghai
timedatectl set-local-rtc 1 -- 時間將與本地電腦時間同步
timedatectl set-time YYYY-MM-DD -- 設置日期
timedatectl set-time HH:MM:SS -- 設置時間
修改網卡配置CentOS 7的網卡名稱
第一步修改eth0文件信息
mv ifcfg-eno16777736 ifcfg-eth0
vi /etc/udev/rules.d/70-persistent-ipoib.rules
添加一行關於eth0的信息進行註冊。
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0C:29:97:E4:F2", NAME="eth0"
第二步修改grub配置信息
輸入以下命令進入對應目錄編輯文件
vim /etc/sysconfig/grub
而後往這個文件中添加「net.ifnames=0 biosdevname=0」內容以下圖所示
grub2-mkconfig -o /boot/grub2/grub.cfg
效果以下
========================至此爲LAMP準備的基礎環境已完成建議重啓服務器===================
Apache配置
yum -y install httpd //安裝
systemctl start httpd.service //開啓apache服務
systemctl enable httpd.service //設置開機啓動
在瀏覽器中輸入ip地址ifconfig若是可以看到test 123...的字樣則表示成功
PHP配置
yum -y install php //安裝
systemctl restart httpd.service //重啓Apache服務
vi /var/www/html/info.php //編輯一個文件作測試順便看一下本身安裝的PHP版本
<?php
phpinfo();
?>
保存退出後再次登錄瀏覽器輸入ip/info.php如果能夠看到PHP版本信息則表示成功
將PHP和MySQL連接起來否則會在安裝的界面中顯示連接數據庫類型爲 SQLit3由於本身犯過這方面的報錯記錄一下 yum -y install php-mysql
yum -y groupinstall "Development Tools" "Development Libraries"
安裝經常使用的PHP關聯模塊yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
重啓Apache服務和PHP服務LAMP環境已完成
zabbix 搭建
zabbix 服務器是在MySQL服務器上進行的
tar -zxvf zabbix-2.4.2.tar.gz
cd zabbix-2.4.2
./configure --with-mysql=/home/mysql/mysql/bin/mysql_config --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --prefix=/usr/local/zabbix
過程當中遇到的報錯
第一種過程當中如出現configure: error: MySQL library not found錯誤是由於缺乏mariadb-devel該軟件包使用yum install mariadb-devel進行安裝後再從新執行
第二種過程當中若出現configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config使用 yum -y install net-snmp-devel 而後從新運行
第三種error while loading shared libraries:libmysqlclient.so.20錯誤,查找libmysqlclient.so.20的位置可使用find命令查找後
ln -s /home/mysql/mysql/lib/libmysqlclient.so.20 /usr/lib64
從新執行
./configure --with-mysql=/home/mysql/mysql/bin/mysql_config --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --prefix=/usr/local/zabbix
沒有警告後執行接下來的命令
# make
# make install
拷貝相關的配置文件到/etc下並進行相關配置修改
# mkdir -p /etc/zabbix
# cp -r /soft/zabbix-2.4.2/conf/* /etc/zabbix/
# chown -R zabbix:zabbix /etc/zabbix
# ln -s /usr/local/zabbix/etc /etc/zabbix/
# ln -s /usr/local/zabbix/bin/* /usr/bin/
# ln -s /usr/local/zabbix/sbin/* /usr/sbin/
修改zabbix_server.conf 服務端
vi /etc/zabbix/zabbix_server.conf
LogFile=/tmp/zabbix_server.log // 日誌文件地址
DBHost=localhost // 數據庫主機
DBName=zabbix // 數據庫名
DBUser=zabbix // 數據庫用戶名
DBPassword=zabbix // 數據庫密碼
ListenIP=xxx //數據庫IP地址
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts //zabbix運行腳本存放目錄
修改zabbix_agentd.conf 客戶端
vi /etc/zabbix/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid // 進程PID
LogFile=/tmp/zabbix_agentd.log // 日誌保存位置
EnableRemoteCommands=1 // 容許執行遠程命令
Server=xxx // agent端的ip本機ip
ServerActive=xxx
Hostname=Zabbix server // 必須與zabbix建立的hostname相同
Include=/usr/local/etc/zabbix_agentd.conf.d/
UnsafeUserParameters=1 // 啓動自定義key
修改PHP相關參數
vi /etc/php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai
post_max_size = 28M
配置web站點
# cd zabbix-2.4.2/
# cp -r frontends/php /var/www/html/zabbix
修改httpd.conf的參數
vi /etc/httpd/conf/httpd.conf
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
建立與zabbix相關的組及庫和用戶
groupadd zabbix // 建立組
useradd -r -g zabbix zabbix // 建立用戶
mysql -uroot -p
mysql> create database zabbix character set utf8;
Mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Mysql> flush privileges;
mysql> use zabbix; // 導入數據庫資源
mysql> source /soft/zabbix-2.4.2/database/mysql/schema.sql;
mysql> source /soft/zabbix-2.4.2/database/mysql/data.sql;
mysql> source /soft/zabbix-2.4.2/database/mysql/p_w_picpaths.sql;
mysql> quit
安裝web界面
#systemctl restart httpd.service
在瀏覽器中輸入http://ip地址/zabbix進入zabbix的web配置頁面一路next有可能會趕上PHP依賴包缺乏的現象找到rpm包下載安裝便可。
Zabbix的默認帳號爲Admin密碼爲zabbix
遇到的問題可查看zabbix server日誌
orabbix 搭建
orabbix 插件是在zabbix server上進行的
下載orabbix插件版本是orabbix-1.2.3.zip
安裝好Java環境
在opt目錄下新建orabbix文件夾後將文件解壓好的文件或者未解壓的zip文件mv到/opt/orabbix下
chmod +x orabbix/ -R
chmod +x run.sh
將orabbix中的執行文件Copy到系統服務目錄中
cp /opt/orabbix/init.d/orabbix/etc/init.d/orabbix
cp/opt/orabbix/conf/config.props.sample /opt/orabbix/conf/config.props
編輯剛剛生成的config.props文件
vi config.props
ZabbixServerList=ZabbixServer1
ZabbixServer1.Address=zabbix 服務器端的ip地址
ZabbixServer1.Port=10051 // 端口號爲與Zabbix Server connection Port。
#ZabbixServer2.Address=IP_ADDRESS_OF_ZABBIX_SERVER
#ZabbixServer2.Port=PORT_OF_ZABBIX_SERVER
將不須要存在的行用 # 將它註銷了。
#pidFile
OrabbixDaemon.PidFile=./logs/orabbix.pid
#frequency of item's refresh
OrabbixDaemon.Sleep=300
#MaxThreadNumber should be >= than the number of your databases
OrabbixDaemon.MaxThreadNumber=100
#put here your databases in a comma separated list
DatabaseList=Monitor
#Configuration of Connection pool
#if not specified Orabbis is going to use default values (hardcoded)
#Maximum number of active connection inside pool
DatabaseList.MaxActive=10
#The maximum number of milliseconds that the pool will wait
#(when there are no available connections) for a connection to be returned
#before throwing an exception, or <= 0 to wait indefinitely.
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1
#define here your connection string for each database
Monitor.Url=jdbc:oracle:thin:@ip地址:端口號:實例名
Monitor.User=zabbix
Monitor.Password=orabbix
#Those values are optionals if not specified Orabbix is going to use thegeneral values.
Monitor.MaxActive=10
Monitor.MaxWait=100
Monitor.MaxIdle=1
Monitor.QueryListFile=./conf/query.props
#DB2.Url=jdbc:oracle:thin:@server2.domain.example.com:<LISTENER_PORT>:DB2
#DB2.User=zabbix
#DB2.Password=zabbix_password
#DB2.QueryListFile=./conf/query.props
#DB3.Url=jdbc:oracle:thin:@server3.domain.example.com:<LISTENER_PORT>:DB3
#DB3.User=zabbix
#DB3.Password=zabbix_password
#DB3.QueryListFile=./conf/query.props
保存以上配置後使用/etc/init.d/orabbix start來啓動Orabbix服務,若後期有別的主機加入則在databaselist後加再配置便可。
在oracle數據庫服務器端配置zabbix信息登錄sqlplus
GRANT ALTER SESSION TO zabbix;
GRANT CREATE SESSION TO zabbix;
GRANT CONNECT TO zabbix;
ALTER USER zabbix DEFAULT ROLE ALL;
GRANT SELECT ON V_$INSTANCE TO zabbix;
GRANT SELECT ON DBA_USERS TO zabbix;
GRANT SELECT ON V_$LOG_HISTORY TO zabbix;
GRANT SELECT ON V_$LOG TO zabbix;
GRANT SELECT ON V_$PARAMETER TO zabbix;
GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO zabbix;
GRANT SELECT ON V_$LOCK TO zabbix;
GRANT SELECT ON DBA_REGISTRY TO zabbix;
GRANT SELECT ON V_$LIBRARYCACHE TO zabbix;
GRANT SELECT ON V_$SYSSTAT TO zabbix;
GRANT SELECT ON V_$PARAMETER TO zabbix;
GRANT SELECT ON V_$LATCH TO zabbix;
GRANT SELECT ON V_$PGASTAT TO zabbix;
GRANT SELECT ON V_$SGASTAT TO zabbix;
GRANT SELECT ON V_$LIBRARYCACHE TO zabbix;
GRANT SELECT ON V_$PROCESS TO zabbix;
GRANT SELECT ON DBA_DATA_FILES TO zabbix;
GRANT SELECT ON DBA_TEMP_FILES TO zabbix;
GRANT SELECT ON DBA_FREE_SPACE TO zabbix;
GRANT SELECT ON V_$SYSTEM_EVENT TO zabbix;
GRANT SELECT ON V_$locked_object TO zabbix;
GRANT SELECT ON dba_objects TO zabbix;
GRANT SELECT ON dba_tablespaces TO zabbix;
GRANT SELECT ON v_$session TO zabbix;
Oracle 11g數據庫的話繼續添加如下命令
execdbms_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;
將Orabbix服務加入隨系統啓動
chkconfig --add orabbix
chkconfig --level 345orabbix on
還有一個很頭疼的報錯
[root@zabbix orabbix]# /etc/init.d/orabbix start
cat: /opt/orabbix/conf/config.props: No such file ordirectory
Starting Orabbix service:
[root@zabbix orabbix]# Stopping
java.lang.Exception: ERROR on main - Connections is empty
atcom.smartmarmot.orabbix.Orabbixmon.run(Orabbixmon.java:101)
atcom.smartmarmot.orabbix.bootstrap.main(bootstrap.java:50)
[root@zabbix orabbix]# ./run.sh
[root@zabbix orabbix]# Stopping
java.lang.Exception: ERROR on main - Connections is empty
atcom.smartmarmot.orabbix.Orabbixmon.run(Orabbixmon.java:101)
at com.smartmarmot.orabbix.bootstrap.main(bootstrap.java:50)。
web界面的orabbix的配置
導入ORACLE的監測模板在orabbix目錄的template內使用上傳下載工具放到本地而後選擇導入便可。而後剩下的界面好比說發短信或發微信或發郵件警告的打通方式寫了很久任督二脈都要堵了。休息一會。。。
=====
擴展LAMP=Linux+Apache+MysQL+PHP
每次搭建都會遇到is not running的問題
在Zabbix中添加Oracle 主機時必須用在此設定的名字Monitor不然沒法監測。 文檔中 xxx 處和被粉紅色覆蓋處均是指實例命令
標紅處是認爲須要執行的部分
搭建 zabbix 2.4多多少少都會遇到一些問題正在挖掘新版本CentOS 6.7 + zabbix 3.0已成功實施有時間後期更新博客。。。