zabixx
zabbix(音同 zæbix)是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。
zabbix能監視各種網絡參數,保證服務器系統的安全運營;并提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
zabbix由2部分構成,zabbix server與可選組件zabbix agent。
zabbix server:zabbix的監控服務器,負責接收agent端發送過來的數據,并做處理。端口:10051
zabbix agent:安裝在各個需要監控主機上,負責收集本地數據并發往server端。端口:10050
zabbix server可以通過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它可以運行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平臺上。
監控系統具備的四種功能:
采集:根據用戶的要求,周期性的采集數據
存儲:對采集到的各種數據進行預約存儲。
可視化:對采集到的數據,進行可視化。
報警:報警系統,在特定的條件下被觸發(超出合理的區間)
監控數據采集通道
SNMP:Simple Network Management Protocol
ssh/telnet
IPMI:
agent: (master/agent)
zabbix的安裝和監控的配置:
zabbix程序的組件:
zabbix_server:服務端守護進程;
zabbix_agentd:agent守護進程;
zabbix_proxy:代理服務器,可選組件;
zabbix_get:命令行工具,手動測試向agent發起數據采集請求;
zabbix_sender:命令行工具,運行于agent端,手動向server端發送數據;
zabbix_java_gateway: java網關;
zabbix_database:MySQL或PostgreSQL;
zabbix_web:Web GUI
端口號:10051
https://www.zabbix.com/download (官方下載安裝地址)
1 .首先部署zabbix-server端:(在yum倉庫里添加zabbix的庫,可從阿里云上去查找)
wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm(下載包)
yum install zabbix-release-3.4-2.el7.noarch.rpm (安裝下載下來的包)
裝上上述這個包之后在/etc/yum.repos.d/下會生成一個zabbix.repo的文件,只有有了此文件,下面的包才可以安裝成功。
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent (安裝程序包)
yum install mariadb-server httpd(安裝數據庫)
進入數據庫:
mysql> create database zabbix character set utf8 collate utf8_bin; (創建數據庫zabbix)
mysql> grant all privileges on zabbix.* to zabbix@'192.168.60.%' identified by 'centos';(創建并授權zabbix用戶登陸本機的數據庫,因為,數據庫和zabbix程序放在一起,所以使用localhost代替本機的IP地址,如果數據庫需要單獨放,則需要指定zabbix程序所在主機服務器的IP地址)
mysql> quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix (執行此步操作)
mysql -uzabbix -hlocalhost -pcentos (現在已經可以連接到數據庫了;進去之后可以查看到生成的zabbixs數據庫里的內容了)
/etc/zabbix/zabbix_server.conf (修改配置文件)
DBName=zabbix (數據庫的名字)
DBHost=192.168.60.20(數據庫的地址)
DBPassword=centos (登陸數據庫的密碼)
vim /etc/httpd/conf.d/zabbix.conf (修改配置文件)
php_value date.timezone Asia/Shanghai (修改時區)
systemctl start zabbix-server (啟動zabbix服務)
systemctl start httpd (啟動服務)
http://192.168.60.20/zabbix/(在瀏覽器上訪問此路徑并安裝zabbix;此IP地址為zabbix主服務的IP地址)
點擊下一步進入以下界面:
如果需要更改不需要重新安裝,只要去修改上面的配置文件就可以了
切換中文版:
updata 應用即可。
監控一個獨立的主機(zabbix-agent監控的主機):(簡單的手動添加的監控選項和參數:)
rpm -ivh zabbix-agent-3.4.11-1.el7.x86_64.rpm
rpm -ivh zabbix-sender-3.4.11-1.el7.x86_64.rpm
(安裝上述兩個包;上述兩個包可在阿里云上下載下來)
vim /etc/zabbix/zabbix_agentd.conf (修改配置文件)
Server=192.168.60.20(更改為 zabbix-server服務器的地址)97行
ServerActive=192.168.60.20 (更改為 zabbix-server服務器的地址)138行
Hostname=nod01 (設定本機的主機名)149行
systemctl start zabbix-agent (啟動服務)
ss -nult (查看端口號;10050)
然后再瀏覽器上的zabbix的主界面里添加剛才的主機:
添加新的組:
添加新的主機:
創建一個新的應用級:
創建一個監控項:
最后點擊添加就可以了。
再添加一個觸發器:(一個監控項可定義多個觸發器來響應不同級別的警告)
查看監控的狀態:
一旦檢測中有觸發器報警,就需要定義actio(動作),來對觸發器的警告做相應的處理。
實驗:實現nginx的簡單的監控和報警后的觸發操作
在從被監測的主機上安裝nginx服務,并添加新的監控項,定義新的觸發器,并且定義action在觸發器報警后做相應的處理。
在被檢測的服務器上:yum install nginx -y;(裝包)nginx (啟動服務)
創建一個新的監控項在nod01上:
在創建一個新的觸發器針對nginx做警告處理的
添加之后查看已創建好的nginx的觸發器:
在監測—>最新數據—->nod01可以看到nginx監控現在處于正常狀態。
如果此時將nginx服務手動暫停的化,zabbix監控就會顯示已經down了。
在此將服務手動開啟后此時監控又正常了。此時在監測—>觸發器;會觸發一個事件。需要點擊確認一下。
創建一個action(動作)來解決nginx觸發器出現警告的故障:(首先讓他遠程自動重啟,如果還是失敗,就發送信息)
配置—->動作,去創建一個action:
為了測試,需要在nod01上添加zabbix的管理員權限:(只為臨時測試使用,生產中是危險的)
visudo
還需要在被監測的服務器上:
vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 (允許agent在本機執行命令)74行
systemctl restart zabbix-agent (重啟服務讓修改的agent配置文件生效)
最后手動將被監測的nginx服務停掉,查看是否能夠自己修復。(如果有問題查自定義腳本是否寫錯)
定義媒介來實現出現警告的通過郵箱的發送:(僅在本機測試使用)
在本機zabbix-server服務器上安裝郵件包;yum install mailx
管理——>報警媒介類型 ;創建一個報警媒介
點擊添加即可。由于是本機的郵件服務,所以只能在本機的用戶之間發送。
在次:管理—->用戶—->admin
然后添加nginx觸發警報的第二步的操作:
恢復操作也給用戶發送郵件信息:
現在就可以實現了;當nginx執行動作里的腳本沒有將nginx服務重新啟動起來,就會執行第二步的操作,發送郵件給定義的用戶通知消息。
使用腳本來創建腳本報警的方式:
腳本放置路徑:zabbix_server.conf配置文件中AlertScriptsPath參數定義的路徑下;
/usr/lib/zabbix/alertscripts/ (只要將腳本放在此目錄下,直接調用腳本名稱就可以了)
zabbix 3.0之后的版本,此三個變量定義為內部宏:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
Python報警腳本可以在互聯網上查找。(安裝好python的執行環境)
腳本示例:給與執行權限,測試執行成功就可以。
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
import sys
def formatAddr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def send_mail(to_list,subject,content):
mail_host = 'smtp.exmail.qq.com'
mail_user = '973366980@qq.com'
mail_pass = '密碼'
#以上內容根據你的實際情況進行修改
msg = MIMEText(content,'','utf-8')
msg[‘Subject’] = Header(subject, 'utf-8').encode()
msg[‘From’] = formatAddr('zabbix監控 <%s>' % mail_user).encode()
msg[‘to’] = to_list
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(mail_user,to_list,msg.as_string())
s.close()
return True
except Exception,e:
print str(e)
return False
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
創建圖形來顯示數據的信息:
定義好圖形后再桌面上添加多個圖形:
首先創建一個聚合圖:
zabbix的宏的定義:
宏:macro,預設的文本替換模式;變量
級別:
全局:Administration –> General –> Macros
模板:編輯模板 –> Macros
主機:編輯主機 –> Macros (僅對當前主機一個有效的)
假如在三個級別都定義了宏,則主機級別的生效
類型:
內建宏:{MACRO_NAME}
文檔參考:
https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location
自定義:{$MACRO_NAME}
命名方式:大寫字母、數字和下劃線;不能以數字開頭
1 . 設置全局宏的界面:
在設置參數的時候,有關80端口的,就可以不用寫80,而是用宏替換。(好處:當需要更改多處的80端口改為8080;時不需要一個個的去修改了,只需要在此處將宏的變量更改一下就可以了)
2 .配置主機的宏的界面:
使用模板來構建監控選項:
示例:在已有主機上添加關于linux監控的選項;(使用模板來添加)
也可以自己創建一個新的模板然后自定義(跟配置主機一樣)
使用網絡上的腳本來構建監控 選項:
https://share.zabbix.com/ (在此網站上可以查找所需要的模板)
要選擇相對應的版本即可。
模板文件下載完成后,導入到zabbix模板庫里面。就可以調用導入的模板文件了。
在下面搜索就可以查看了。
在被監控的服務器上:
vim /etc/zabbix/zabbix_agentd.d/test.conf (新建配置文件)
定義一個key,然后在監控端就可以看到此key的值。
UserParameter=memory.used,/usr/bin/free |/usr/bin/awk'/^Mem/{print $3}' (內容)
systemctl restart zabbix-agent (重啟服務,然后讓key值生效)
yum install zabbix-get -y (在服務器端下載手動測試的工具)
zabbix_get -s 192.168.60.21 -p 10050 -k "memory.used" (手動測試在服務器端)
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/103496