您好,登錄后才能下訂單哦!
在centos6.5上編譯安裝zabbix2.4
zabbix server安裝節點為:192.168.1.36
被監控主機節點為:192.168.1.37
本來想在centos6.5上安裝zabbix3.0,沒想到裝到第一步就進行不下去了,百度、谷歌好半天也沒搜到答案,好多人也遇到同樣的問題:就是進入zabbix的web頁面,第一步點擊下一步時,現象是頁面刷新后,沒有進行下一步,所以,只好作罷,改裝了zabbix2.4。
還有一個失敗是,本來打算使用企業公眾號進行微信的zabbix告警實驗,但也是到test時候一直失敗,苦于找不到解答,只好采用網上文檔較多的使用微信企業號進行zabbix告警實驗。
所以,以上是遇到的問題解決不了,只好繞開問題把實驗做成功。
zabbix的server端IP:192.168.1.36
zabbix的agent端IP:192.168.1.37
前提是兩臺主機的防火墻和selinux都關閉:
]# service iptabels stop
]# vim /etc/sysconfig/selinux
SELINUX=disabled
在server安裝基礎軟件包,這里的環境使用yum安裝,如果使用源碼安裝也是可以的
]# yum -y install wget vim tree gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp net-snmp-devel curl-devel
啟動httpd、mysql并設置成開機自動啟動
]# service httpd start
]# service mysqld start
]# chkconfig httpd on
]# chkconfig mysqld on
如果實際生產中設置了iptables,則可參考如下設置:
]# iptables -I INPUT -p tcp -m multiport --destination-port 80,10050:10051 -j ACCEPT
]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,10050:10051
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#保存iptables規則
]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
三.配置PHP參數
zabbix的運行需要特定的php參數支持,修改如下
]# 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
修改httpd的FQDN錯誤,重啟httpd服務
]# echo "ServerName localhost:80" >>/etc/httpd/conf/httpd.conf
]# /etc/init.d/httpd restart
四.下載zabbix-2.4.5.tar.gz
https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz/download?use_mirror=jaist
五.添加zabbix用戶和組
]# groupadd -g 201 zabbix
]# useradd -g zabbix -u 201 -s /sbin/nologin zabbix
六.安裝zabbix-server端
]# tar xf zabbix-2.4.5.tar.gz
]# cd zabbix-2.4.5
]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl、
]# make && make install
#創建zabbix數據庫以及相關表
]# mysql -e "create database zabbix default charset utf8;"
]# mysql -e "grant all on zabbix.* to zabbix@localhost identified by 'zabbix';"
]# mysql -uzabbix -pzabbix zabbix<./database/mysql/schema.sql
]# mysql -uzabbix -pzabbix zabbix<./database/mysql/p_w_picpaths.sql
]# mysql -uzabbix -pzabbix zabbix<./database/mysql/data.sql
#配置軟連接和啟動文件信息
]# mkdir /var/log/zabbix
]# chown zabbix.zabbix /var/log/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/
]# cp /root/zabbix-2.4.5/misc/init.d/fedora/core/zabbix_* /etc/init.d
]# chmod 755 /etc/init.d/zabbix_*
#修改/etc/init.d目錄下的zabbix_server和zabbix_agentd啟動文件
]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_server
]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_agentd
#修改/etc/zabbix/zabbix_server.conf
]# sed -i "s@DBUser=root@DBUser=zabbix@g" /etc/zabbix/zabbix_server.conf
]# sed -i "s@# DBPassword=@DBPassword=zabbix@g" /etc/zabbix/zabbix_server.conf
]# egrep -v '^#|^$' /etc/zabbix/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
#修改/etc/zabbix/zabbix_agentd.conf,這里的IP地址寫的是zabbix_server的IP地址,即192.168.1.3
]# sed -i "s@Server=127.0.0.1@Server=127.0.0.1,192.168.1.36@g" /etc/zabbix/zabbix_agentd.conf
]# sed -i "s@ServerActive=127.0.0.1@ServerActive=127.0.0.1:10051@g" /etc/zabbix/zabbix_agentd.conf
]# sed -i "s@tmp/zabbix_agentd.log@var/log/zabbix/zabbix_agentd.log@g" /etc/zabbix/zabbix_agentd.conf
]# sed -i "s@^# UnsafeUserParameters=0@UnsafeUserParameters=1\n@g" /etc/zabbix/zabbix_agentd.conf
]# egrep -v '^#|^$' /etc/zabbix/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=127.0.0.1,192.168.1.36
ServerActive=127.0.0.1:10051
Hostname=Zabbix server
UnsafeUserParameters=1
#復制zabbix站點的文件到/var/www/html目錄下
]# cp -r /root/zabbix-2.4.5/frontends/php/ /var/www/html/zabbix/
]# chown -R apache.apache /var/www/html/zabbix/
]# chkconfig zabbix_server on
]# chkconfig zabbix_agentd on
]# service zabbix_server start
]# service zabbix_agentd start
七.通過web站點配置zabbix
以上步驟配置完后通過http://192.168.1.36/zabbix/網頁端進行后續配置
1.安裝界面
2.PHP配置檢查界面,結果是OK表示正常,如果是fail狀態,請修改相關的php配置參數,并重啟httpd服務
3.這里的數據庫相關信息,在上文中有配置,具體請查看上文
5.最后配置結果預覽
6.安裝完成
八.訪問zabbix的web管理界面
安裝完成后,通過http://192.168.1.36/zabbix/index.php#就能直接訪問web管理界面
默認用戶名:admin,密碼:zabbix
九.調整zabbix語言
十.zabbix語言設置成中文后,有亂碼解決如下
注:我這步驟也是搜索網上的文檔參考的,我操作時候,沒有遇到中文亂碼的情況,所以這個步驟就沒做。
文檔出處:http://www.iyunv.com/thread-62087-1-1.html
1.從windows下控制面板->字體->選擇一種中文字庫例如“楷體”
2.將字體上傳至/var/www/html/zabbix/fonts目錄下
3.修改zabbix頁面管理的中文字體設置
]# vim /var/www/html/zabbix/include/defines.inc.php
#修改如下2行
define('ZBX_FONT_NAME', 'simkai');
define('ZBX_GRAPH_FONT_NAME', 'simkai');
修改后的zabbix界面。
十一.修改完以上步驟后,zabbix界面的歷史記錄還是亂碼,這是由于mysql的數據庫字符集導致的,解決辦法如下
注:此步驟,本次實驗沒有遇到。
1.備份zabbix數據庫,并修改備份下來的數據文件
]# mysqldump zabbix >zabbix.sql
]# sed -i 's/latin1/utf8/g' zabbix.sql
2.刪除zabbix數據庫
> drop database zabbix;
3.關閉mysql數據庫,設置默認字符集
]# service mysqld stop
#在mysql配置文件中添加字符集參數
]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set = utf8
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4.啟動mysql并恢復zabbix數據庫
]# service mysqld start
]# mysql
> create database zabbix;
> show create database zabbix;
> show databases;
> use zabbix;
> source zabbix.sql;
測試agent端與server端是否通信正常:
]# zabbix_get -s127.0.0.1 -p10050 -k"system.uptime"
65819
注:因為,zabbix服務器上安裝了server端和agent端,所以直接在本地測試即可。
有輸出,則表示通信正常。
注意:zabbix監控server本機,要先在頁面上設定zabbix-server監控,才能使zabbix server端監控自己;
根據下圖:
最后點擊《添加》按鈕即可。
此時,稍等片刻,應該就會在檢測中--》儀表盤頁面,就可看到
這里的截圖,顯示綠色為已經監控到的主機,有2個,原因是,在寫這篇博客時,已經做完整個實驗,添加過另一臺監控的主機了,所以顯示有監控了2臺主機(包括zabbix主機和一個agent端的主機)。
十二.在client端192.168.1.37安裝zabbix
安裝基礎軟件包
]# yum install wget vim tree gcc gcc-c++ -y
groupadd -g 201 zabbix
useradd -g zabbix -u 201 -s /sbin/nologin zabbix
tar xf zabbix-2.4.5.tar.gz
cd zabbix-2.4.5
#開始編譯安裝zabbix客戶端
./configure --prefix=/usr/local/zabbix --enable-agent
]# make && make install
#創建zabbix的日志目錄
]# mkdir /var/log/zabbix
]# chown zabbix.zabbix /var/log/zabbix
#復制zabbix_agentd啟動文件到/etc/init.d目錄下
]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
]# chmod 755 /etc/init.d/zabbix_agentd
#在iptables中放行10050和10051端口
]# iptables -I INPUT -p tcp -m multiport --dports 10050:10051 -j ACCEPT
]# service iptables save #保存iptables規則
#查看iptables結果
]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 10050:10051
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#修改啟動文件和配置軟連接
]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_agentd
]# ln -s /usr/local/zabbix/etc/ /etc/zabbix
]# ln -s /usr/local/zabbix/bin/* /usr/bin
]# ln -s /usr/local/zabbix/sbin/* /usr/sbin/
#/etc/zabbix/zabbix_agentd.conf,這里的IP地址寫的是zabbix_server端的IP地址
]# sed -i "s@Server=127.0.0.1@Server=192.168.3.28@g" /etc/zabbix/zabbix_agentd.conf
]# sed -i "s@ServerActive=127.0.0.1@ServerActive=192.168.3.28:10051@g" /etc/zabbix/zabbix_agentd.conf
]# sed -i "s@tmp/zabbix_agentd.log@var/log/zabbix/zabbix_agentd.log@g" /etc/zabbix/zabbix_agentd.conf
]# sed -i "s@^# UnsafeUserParameters=0@UnsafeUserParameters=1\n@g" /etc/zabbix/zabbix_agentd.conf
]# egrep -v '^$|^#' /etc/zabbix/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=192.168.1.36
ServerActive=192.168.1.36:10051
Hostname=Zabbix server
UnsafeUserParameters=1
#設置zabbix_agentd開機自動啟動,并啟動zabbix_agentd服務
]# chkconfig zabbix_agentd on
]# service zabbix_agentd start
在被監控主機命令行上設置完后,就可在zabbix的web管理頁面上添加監控主機了。
添加步驟,同監控zabbix本機的步驟,這里不再贅述。
英文向導:Configuration→Hosts→Create host
這里要說明的是,在添加被監控主機時,主機名稱和IP地址,要寫被監控主機上的。
然后,再點擊Configuration→Hosts的template增加模板(select)
加完后點擊Configuration→Hosts效果,Z變綠就OK了。
至此zabbix基礎搭建完成,接下來是重點微信報警。
十一.設置微信企業號
https://qy.weixin.qq.com/ 這個地址申請企業號 按照步驟一步步來就行了
這個微信企業號也是從網上搜到的文檔,反正就是自己注冊一個企業號,用手機掃描,輸入個人×××號、手機號就可以。基本就是鼠標操作,沒有難度,頂多點錯了,重新再點一遍唄。
參考文檔出處:http://mxlmgl.blog.51cto.com/9834691/1831695
進入“通訊錄”,點擊“組織架構”旁邊的加號,點擊“新增成員”
注:這里的賬號相當于你的企業賬號,與微信號無關。
必須先在此處創建用戶,并且填寫正確的微信號或者手機號,才可通過掃描二維碼關注該企業號
我這里是crystal(這個會在后面腳本參數里用到)
關注企業號的方法:點擊左側的“設置”-二維碼,使用微信掃一掃掃描二維碼
點擊左側列的“應用中心”,點擊“自建應用”的圖標zabbix
注:創建應用時,上傳了美女圖片,本人屌絲喜歡看美女,哈哈。
這里要記住一個值:應用ID,后面配置需要填寫。
設置-功能設置-權限管理-新建管理組
管理員必須事先已經關注了企業號,并且已經設置好郵箱地址
增加完的系統組:
注意應用權限,通訊錄權限,
注意:這里要記錄下來下面的CorpID和Secret后面配置里要用到。
下面是重點了:
http://qydev.weixin.qq.com/debug 微信企業號接口調試工具(看看接口是否能調用成功)
這里的CorpID和Secret填上,就會出現access_token
填寫上步驟獲得的信息,點擊檢查問題:
檢測后則會繼續出現如下信息:(ok表示成功)
得出的返回結果,復制紅色框中的內容,下一步要用到。
然后接口類型換成發送消息
填寫信息:
這里的access_token已經在上一步獲得了,重點是body,經過看官方給的格式小編總結如下:
{
"touser": "crystal",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "text",
"agentid": 1,
"text": {
"content": "lala(http://xxxxx)"
},
"safe":"0"
}
這里需要把touser的值(crystal)換成自己的員工賬號
點擊檢查問題
然后大家就可以在微信企業號收到消息了,內容是lala(http://xxxxx)
以上證明接口調用沒問題了,接下來就該上腳本了。
首先:腳本放什么位置
/usr/local/zabbix/share/zabbix/alertscripts
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
好了,上正菜:
]# vim /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh
#!/bin/bash
CorpID=wxef******7423(此處打碼)
Secret=PYzCHeqi3Jjbp06V***(此處打碼)_cKoarAeSqn8pLls
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl $GURL -H "DNT: 1" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 BIDUBrowser/8.1 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,p_w_picpath/webp,*/*;q=0.8" -H "X-DevTools-Emulate-Network-Conditions-Client-Id: B546FC80-414C-403F-95F0-EB0F70E58EF7" -H "Connection: keep-alive" -H "Cache-Control: max-age=0" --compressed | awk -F \" '{print $4}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body() {
local int appId=1
local userId=$1
local partyId=1
local tag=1
local msg=$(echo "$@" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser":"'"$userId"\"",\n"
printf '\t"toparty":"'"$partyId"\"",\n"
printf '\t"msgtype": "text",'"\n"
printf '\t"totag":"'"$tag"\"",\n"
printf '\t"agentid":"'"$appId"\"",\n"
printf '\t"text":{\n'
printf '\t\t"content":"'"$msg"\"
printf '\n\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
body $1 $2 $3
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
測試方法:
./weixin.sh crystal 1 helloevery
crystal 是用戶賬號(不是微信號,是你在企業號里的名字)
1 這是部門的ID(或者是應用ID,我的都是1)
test:是你想發的內容
出現以上內容說明腳本執行成功,你的微信企業號會收到你發的報警內容,至此我們成功了多一半了*..*
以上是手機微信收到的內容。
接下來我們要做的就是在web界面設置報警媒介類型和觸發動作了
點擊管理(Administration)-媒體類型(Mediatypes)-創建媒體類型(Create media type)
填寫完后,即可看到示警媒介類型增加了一個weixin。
下一步,點擊點擊管理(Administration)-Users Create user
下一步,點擊點擊管理(Administration)-Users Create user
選擇用戶組:
此時,先不要點擊添加,設置示警媒介后再添加。
選擇創建的weixin:
在Media點add
類型(ty)pe選剛才定義的weixin
收件人(send to) :填你的微信號
接下來在permissions中把user_type改成超級管理員
點擊添加,到此user增加完畢了。
下面一步是創建觸發動作
默認信息:
Host:{HOST.NAME}
Time:{EVENT.DATE}{EVENT.TIME}
Status:{TRIGGER.STATUS}
Event:{TRIGGER.NAME}
恢復信息:
Server recovered.
Host:{HOST.NAME}
Time:{EVENT.DATE}{EVENT.TIME}
Status:{TRIGGER.STATUS}
Event:{TRIGGER.NAME}
這樣當服務器恢復后,可以收到一條以Serverrecovered開頭的信息,能及時知道服務器恢復正常。
條件(Conditions)無視。
注意:必須填完下面operations里的選項才能點擊添加(ADD)
在填完操作(operations)里的選項時先按里面的add再按外面的add,否則會報錯
至此配置完畢,現在關閉被監控機,等一會,若微信收到消息,則配置成功。
大概等了有不到5分鐘,微信報警就收到了。
到此為止,實驗大功告成!!
燒香,網上能找到文檔且能搞成功!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。