引子:文章分爲3段
1.zabbix介紹,包括架構,組件工作流程等。
2.zabbix安裝,yum安裝和編譯安裝
3.zabbix-web登錄界面和中文修改
zabbix介紹
Zabbix是一個企業級的開源分佈式監控解決方案,由一個國外的團隊持續維護更新,軟件可以自由下載使用,運作團隊靠提供收費的技術支持贏利。
zabbix的架構:
Zabbix通過C/S模式採集數據,通過B/S模式在web端展示和配置。
被監控端:主機通過安裝agent方式採集數據,網絡設備通過SNMP方式採集數據
Server端:通過收集SNMP和agent發送的數據,寫入MySQL數據庫,再通過php+apache在web前端展示。
Zabbix運行條件:
Server:
Zabbix Server需運行在LAMP(Linux+Apache+Mysql+PHP)環境下,對硬件要求低
Agent:
目前已有的agent基本支持市面常見的OS,包含Linux、HPUX、Solaris、Sun、windows
SNMP:
支持各類常見的網絡設備。
zabbix架構中所用到的組件:
Zabbix sever:負責接收agent發送的報告信息的核心組件,所有配置、統計數據及操作數據均由其組織進行;
Database storage:專用於存儲所有配置信息,以及由zabbix收集的數據
Web interface:zabbix的GUI接口,通常與server運行在同一臺主機上;
Proxy:可選組件,常用於分佈監控環境中,代理server收集部分被監控端的監控數據並統一發往server端;
Agent:部署在被監控主機上,負責手機本地數據併發往server端或porxy端;
zabbixweb、zabbix-server、zabbix-database可以部署在同一臺機器上,也可以分開佈置。
Zabbix常用的術語
主機(host):要監控的網絡設備,可由IP或DNS名稱指定。
主機組(host group):主機的邏輯容器,可以包含主機和模板,但同一組 內的主機和模板不能互相連接;主機組通常在給用戶或用戶組指派監控權限時使用;
監控項(item):一個特定監控指標的相關的數據,這些來自於被監控對象;item是zabbix進行收據收集的核心,沒有item,將沒有數據;相對某監控對象來說,每個item都由“key”進行標識;
觸發器(trigger):一個表達式,用於評估某監控對象的某特定item內所接收到的數據是否在合理範圍內,即閥值;接收到的數據量大於閥值時,觸發器狀態將從“OK”轉變爲“problem”,當數據量再次迴歸到合理範圍時,其狀態將從“problem”轉換回“OK”;
事件(event):即發生的一個值得關注的事情,例如觸發器的狀態轉變,新的agent或重新上線的agent的自動註冊等;
動作(action):指對於特定事件事先定義的處理方法,通過包含操作(如發送通知)和條件(何時執行操作);
報警升級(escalation):發送警報或執行遠程命令的自定義方案,如每隔5分鐘發送一次警報,共發送5次等;
媒介(media):發送通知的手段或通道,如Email,Jabber或SMS等;
通知(notification):通過選定的媒介向用戶發送的有關某事件的信息;
遠程命令(remote command):預定義的命令,可在被監控主機處於某特定條件下時自動執行;
模板(template):用於快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接鏈接至單個主機
應用(application):一組item的集合;
Web場景(web scennario):用於檢測web站點可用性的一個或多個HTTP請求;
前端(frontend):zabbix的web接口
zabbix的工作流程
結合下圖和上面的術語解釋會更直觀:
步驟不是固定只是這樣解釋更好理解。
1、定義一個item.
2、獲取此item的數據,圖中是zabbix的polle進程去獲取數據(後續有解釋zabbix進程).
3、獲取的item的數據數值超出了Trigger中對此item定義的閥值,Trigger由OK轉換爲problem狀態.
同時會觸發Events,如果有設置Action的話會觸發.
4、Actions會執行動作.
5、新獲取的item數據重新低於閥值,Trgger回到OK狀態.報警停止.事件會保存.
在host中定義item,針對各item設置Trigger.因爲需要定義的item和Trigger太多,可以直接在host中套用
Template(模板),模板中定義了好了item和Trigger以及需要展示的Graphs.
也可以設置一個host group,對一組機器進行操作,如設置模板,定義某item等等.
不想某host或host group報警的話,可以設置爲Maintenance(維護),這樣即使觸發了triggers也
不會觸發actions和events.
zabbix服務端運行的進程
zabbix-server運行後一般可能會出現以下進程,有的不會出現。
watchdog:監控以下進程,發現進程不在就重新啓動。
housekeep:items過期數據清理。
alerter:執行報警
poller:拉取數據的,會出現過個poller並行去拉取數據。
httppoller:web頁面數據拉取的專用poller。
discoverer:agent發現機制
Pinger:基於ping探測節點存活。
db_config_syscer:數據庫配置同步器(多個數據庫場景時,多用於集羣)
db_data_syscer:數據庫數據同步器(多個數據庫場景時,多用於集羣)
node watcher:監控節點。
timer:計時器
escalator:報警升級
zabbix安裝
yum安裝zabbix
1. 建立LAMP環境
安裝mysql,httpd,php
#yum -y install mysql-server httpd php
service httpd start
service mysqld start
2. 新建zabbix組和用戶(系統用戶、系統組)
#/usr/sbin/groupadd -r zabbix
#/usr/sbin/useradd -g zabbix -r zabbix
3.安裝zabbix的repo源
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
可以登錄此url: http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/ ,找到如下圖的rpm包.按實際下載.
4.zabbix包安裝
使用yum安裝非常簡單,不需要去處理包之間的關係。不過此處需要注意的是
在安裝zabbix-server包的時候,在yum解決包依賴關係的時候有時會下載pgsql,
而不是想要的mysql,需要注意一下.
Servier端
Yum –y install zabbix \\ zabbix公共組件
Yum –y install zabbix-server \\ zabbix-server端專用包
Yum –y insatll zabbix-server-mysql \\ zabbix-server端mysql
Yum –y install zabbix-get \\ 服務器端組件,用於get獲取數據
Yum –y install zabbix-java \\ 監控java程序組件
Proxy端
Yum –y install zabbix \\ zabbix公共組件
Yum –y install zabbix-proxy \\ proxy端專用包
Yum –y install zabbix-proxy-mysql \\proxy端mysql
Agent端
Yum –y install zabbix \\ zabbix公共組件
yum –y install zabbix-agent \\agent專用包
Yum –y install zabbix-sender \\ 用戶agent 主動發送數據
Web
Yum –y insatll zabbix-web
Yum –y insatll zabbix-web-mysql
因爲我們實驗機:zabbix-server,zabbix-agent,zabbix-web 是在一臺機器上的,proxy不在這次實驗
Yum install zabbix zabbix-server zabbix-server-mysql zabbix -get zabbix-web zabbix-web-mysql zabbix-agent zabbix-sender
5.mysql設置:
創建一張表取名zabbix,設置utf8字符集
CREATE DATABASE zabbix CHARACTER SET utf8
爲zabbix表,創建一個用戶:zabbix 密碼:zabbix 訪問條件:localhost權限:ALL
GRANT ALL on zabbix.* TO'zabbix'@‘localhost' IDENTIFIED BY 'zaxpass';
Zabbix_sql腳本導入mysql
cd/usr/share/doc/zabbix-server-mysql-2.4.*/create/
這裏可以看到3個sql腳本,將他們導入到之前建立的mysql,zabbix表中
data.sql p_w_picpaths.sql schema.sql
按以下順序導入
#mysql zabbix < schema.sql
#mysql zabbix < p_w_picpaths.sql
#mysql zabbix < data.sql
6.修改相關配置文件
配置修改Zabbix Service 配置文件
vim /etc/zabbix/zabbix_server.conf
DBUser=zbxuser
DBPassword=zabbix
修改php時區
/etc/php.ini 在;date.timezone=
增加一行,別忘了刪除掉; ,;是註釋
timezone = Asia/Shanghai.
關閉防火牆:
Service iptable stop
或者vi /etc/sysconfig/iptables,增加以下內容:添加80端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
至此yum安裝zabbix完畢,下一步使用web登錄zabbix,配置zabbix。
編譯安裝zabbix
創建zabbix組和以zabbix爲組的zabbix用戶
#groupadd zabbix
#useradd –g zabbix zabbix
1.準備好安裝包,上官網下載合適的安裝包,這裏使用的是zabbix-2.4.1.tar.gz
2.爲方便安裝包的統一管理都安裝在/opt下
#tar zxvf zabbix-2.4.1.tar.gz
#cd /opt/zabbix-2.4.1.tar.gz
開始編譯
#./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --enable-ipv6 --with-libcurl
#make && make install
先開啓mysql(之前的chkconfig只是設置開機啓動並沒有將服務啓動。)設置mysqlroot密碼爲123456
#service mysql start
#mysqladmin -u root password 123456
在mysql內創建zabbix庫,設置字符爲UTF8
#mysql –uroot –p123456
#create datebase zabbix character set utf8;
# grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123456';
#quit
(注意mysql命令後面必須帶上‘;’否則命令會失敗)
將zabbix表導入數據庫
#cd /root/zabbix-2.0.4/database/mysql/
#mysql -uzabbix -p123456 zabbix < schema.sql
#mysql -uzabbix -p123456 zabbix < p_w_picpaths.sql
#mysql -uzabbix -p123456 zabbix < data.sql
複製程序和修改配置文件
複製配置文件到zabbix安裝目錄
#cp -R /opt/zabbix-2.4.1/conf/zabbix_agentd /usr/local/zabbix/etc/
#cp /opt/zabbix-2.4.1/conf/zabbix_agentd.win.conf /usr/local/zabbix/etc/
#cp /opt/zabbix-2.4.1/conf/zabbix_proxy.conf /usr/local/zabbix/etc/
然後修改zabbix_server.conf配置文件數據庫(mysql)相關部分:
#vim /usr/local/zabbix/etc/zabbix_server.conf
修改以下內容:
DBUser=zabbix
DBPassword=123456
先看下服務端口是否添加若沒有則添加
grep zabbix /etc/services
若有以上內容則不需要其他操作,若沒有。
則修改/etc/services文件,在文件末尾追加以上內容
修改zabbix目錄屬性
#chown –R zabbix.zabbix /user/local/zabbix
配置軟連接
啓動zabbix前,做相關軟連接,不然會報錯:找不到庫文件。
這裏安裝的是64位系統:
#ln -s /usr/local/iksemel/lib/libiksemel.so.3 /usr/lib64/libiksemel.so.3
假如是32位系統:
#ln -s /usr/local/iksemel/lib/libiksemel.so.3 /usr/lib/libiksemel.so.3
接着爲 zabbix 命令行操作文件做鏈接,方便系統可以找得到。
#ln -s /usr/local/zabbix/bin/* /usr/bin/
#ln -s /usr/local/zabbix/sbin/* /usr/sbin/
設置用service命令 啓動腳本
拷貝zabbix啓動腳本到/etc/init.d/下。
#cp /opt/zabbix-2.4.1/misc/init.d/fedora/core/zabbix_* /etc/init.d/
修改zabbix啓動腳本中程序目錄的位置。
vim /etc/init.d/zabbix_server
需要修改內容如下:
BASEDIR=/usr/local/zabbix
vim /etc/init.d/zabbix_agentd
需要修改內容如下:
BASEDIR=/usr/local/zabbix
並添加可執行權限:
#chmod +x /etc/init.d/zabbix_server
#chmod +x /etc/init.d/zabbix_agentd
添加開啓啓動
#chkconfig --add zabbix_server
#chkconfig --add zabbix_agentd
#chkconfig --level 345 zabbix_server on
#chkconfig --level 345 zabbix_agentd on
添加完,則使用命令chkconfig –list|grep zabbix查看下是否成功
修改web相關配置
#mkdir /var/www/html/zabbix
#cp -a /opt/zabbix-2.4.1/frontends/php/* /var/www/html/zabbix/
#chown -R zabbix.zabbix /var/www/html/zabbix/
然後對php配置文件做相應的調整
vim /etc/php.ini
修改以下內容(具體工作環境配置內容需要改變):
max_execution_time = 600
max_input_time = 600
memory_linit = 256M
post_max_size=32M
upload_max_filesize =16M’
date.timezone =PRC(或者就Asia/Shanghai)
修改完直接重啓apache服務
#service httpd restart
#service zabbix_server restart
#service zabbix_agentd restart
編譯安裝完畢!!下一步使用web登錄zabbix,配置zabbix。
配置zabbix
http://192.168.1.108/zabbix/
此處有報錯的話就檢查報錯。
host:填寫zabbix-server的ip地址或主機名。
到了此處說明zabbix服務端的安裝已經完成.下面講解zabbix的使用。
修改成中文:
若不習慣英文可以調節成中文(右上角)
解決zabbix圖中出現中文亂碼情況
設置zabbix的語言爲中文時,圖中的中文會變成方塊。如下圖:
這個問題是由於zabbix的web端沒有中文字庫導致的,需要把中文字庫加上即可。
具體操作如下:
a 在windows系統中的c:\windows\fonts目錄中拷貝一個自己喜歡的字體文件出來,
例如:simkai.ttf (楷體 常規 )。
b 把拷貝出來的字體上傳到zabbix server 上 /var/www/html/zabbix/fonts目錄下。
c 將zabbix server 上fonts目錄下原來的“DejaVuSans.ttf”改名。例如爲“DejaVuSans.ttf.bak”
cd /var/www/html/zabbix/fonts
mv DejaVuSans.ttf/var/www/html/zabbix/fonts/DejaVuSans.ttf.bak。
d 將上傳上去的文件改成“DejaVuSans.ttf”
mv simkai.ttf /var/www/html/zabbix/fonts/DejaVuSans.ttf
e 刷新下web頁面會發現原來中文亂碼的地方都正常的
後續還會修改,有錯誤請各位不吝指出,謝謝。