cacti、nagios、zabbix、smokeping、open-falcon等等 cacti、smokeping偏向於基礎監控,成圖很是漂亮 cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖 open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究 後續以介紹zabbix爲主
C/S架構,基於C++開發,監控中心支持web界面配置和管理 單server節點能夠支持上萬臺客戶端 最新版本3.4,官方文檔https://www.zabbix.com/manuals 5個組件 zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據 數據存儲 存放數據,好比mysql web界面 也叫web UI,在web界面下操做配置是zabbix簡單易用的主要緣由 zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力 zabbix-agent 客戶端軟件,負責採集各個監控服務或項目的數據,並上報
官網下載地址 www.zabbix.com/downloadphp
rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpmpython
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysqlmysql
會連帶安裝httpd和php 若是mysql以前沒有安裝的話,須要根據lamp那一章的mysql安裝方法安裝mysqllinux
vim /etc/my.cnf //須要增長配置ios
character_set_server = utf8
重啓mysqld服務後,進入mysql命令行,建立zabbix庫web
create database zabbix character set utf8;
再建立用戶sql
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'cc-zabbix';
導入數據數據庫
cd /usr/share/doc/zabbix-server-mysql* //這裏版權根據本身的來,按tab自動vim
gzip -d create.sql.gz
mysql -uroot -pxxx zabbix < create.sqlwindows
systemctl start httpd; systemctl enable httpd //注意查看80端口是否被佔用
vim /etc/zabbix/zabbix_server.conf //修改或增長
DBHost=127.0.0.1 //在DBName=zabbix上面增長 DBPassword=cc-zabbix //在DBuser下面增長
systemctl start zabbix-server ;systemctl enable zabbix-server
netstat -lntp |grep zabbix //查看監聽端口
瀏覽器訪問http://ip/zabbix/ //web界面下面配置zabbix,這裏ip根據本身的來
注意看右邊是否都是ok,顯然這裏有個Fail,PHP的時間出錯,就去php的配置文件修改
vim /etc/php.ini
systemctl restart httpd
用戶名Admin 密碼zabbix
修改管理員密碼:
修改密碼時還能把語言修改了,更新完後刷新頁面,就變成中文了,以下圖所示:
進入mysql命令行,選擇zabbix庫 mysql -uroot -p123456 zabbix
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
這樣就更改了Admin用戶的密碼
在客戶端上也須要下載zabbix的yum源 wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm yum install -y zabbix-agent vim /etc/zabbix/zabbix_agentd.conf //修改以下配置 Server=127.0.0.1修改成Server=192.168.36.128 //定義服務端的ip(被動模式) ServerActive=127.0.0.1修改成ServerActive=192.168.136.128 //定義服務端的ip(主動模式) Hostname=Zabbix server修改成Hostname=cc-02 //這是自定義的主機名,一會還須要在web界面下設置一樣的主機名 systemctl start zabbix-agent systemctl enable zabbix-agent
主動或者被動是相對客戶端來說的 被動模式,服務端會主動鏈接客戶端獲取監控項目數據,客戶端被動地接受鏈接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據彙報給服務端,服務端只負責接收便可。 當客戶端數量很是多時,建議使用主動模式,這樣能夠下降服務端的壓力。 服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式
先添加主機組cc-test 再添加主機,主機名稱和可見名稱都寫cc-02 羣組選擇cc-test IP地址填寫客戶端的ip 192.168.36.131
這樣主機就添加成功了,而後咱們在來了解幾個東西:
應用集,監控大的項目,如cpu,Filesystems(文件系統)等,它是一個集合,包含了多個監控項
監控項,監控的項目細化了,如CPU就監控好多項,並且每一個監控項是否會有觸發器也給羅列出來了
觸發器,就是報警系統,有分了不少個級別,能夠根據咱們的需求對不一樣的監控項設置不一樣的級別觸發器
圖形,就是經過圖形的樣子更直觀的展現咱們監控項的波動,就像咱們windows裏面的任務管理器裏面的性能同樣
自動發現,能夠經過配置監控項自動抓取咱們所須要的東西,而後造成圖形,觸發器這些
web監控,就是監控咱們的網站,www.……
添加完後,是沒有任何監控項的,須要咱們從其餘模板裏面去導入
而後經過一個模板的監控項去找咱們須要的監控項,前面打勾而後複製到咱們的模板裏面
這樣咱們的監控項就複製過來了
注意,這裏咱們其餘項均可以複製,自動發現是不行的,由於沒有複製項:
因此咱們就要用另一種方法去添加了:
刪除咱們的添加項,而後選擇咱們的模板,點擊連接的模板:
選擇完以後必定要按添加,否則就沒添加起,相似圖上所示
而後回到個人模板,就發現咱們的監控都導進來了,而後根據咱們的需求去保留,不要的都刪掉。
刪以前先作一個操做,點擊咱們模板進入到連接模板下,在動做那欄,會有2個操做:取消連接 取消連接並清理
顯然咱們須要監控項,直接點擊取消連接,而後去咱們的模板裏面刪除,若是不取消連接,咱們是沒法在咱們的模板裏面刪除監控項的,就像是軟鏈接同樣。注:取消連接後,必定要點擊更新,否則是不會生效的。
回到咱們的模板,發現沒有,後面沒有連接模板了,這樣咱們就能夠去刪除咱們不須要的監控項了
設置爲中文後,zabbix圖形的中文文字會顯示小方框 這是由於在zabbix的字體庫中沒有中文字體,須要從windows上借用一個過來 vim /usr/share/zabbix/include/defines.inc.php //搜索ZBX_FONTPATH 它定義的路徑是「fonts」,它是一個相對路徑,絕對路徑爲/usr/share/zabbix/fonts,而字體文件爲「ZBX_GRAPH_FONT_NAME」所定義的「graphfont」,它是一個文件,絕對路徑爲/usr/share/zabbix/fonts/graphfont windows字體路徑爲「C:\Windows\Fonts\」,找到「simfang.ttf」(其實就是那個仿宋簡體),先把它複製到桌面上,而後上傳到linux的/usr/share/zabbix/fonts/,而且更名爲graphfont.ttf
1.修改自動發現規則裏面的網卡間隔時間,以便咱們快速獲取圖形
2.重啓服務,服務端和客服端,刷新頁面
這裏咱們就能夠更好的查看咱們的網卡流量了。
調整完成後就能夠把自動發現裏面的時間間隔調大點!
需求:監控某臺web的80端口鏈接數,並出圖
兩步:1)zabbix監控中心建立監控項目;2)針對該監控項目以圖形展示
對於第一步,須要到客戶端定義腳本
vim /usr/local/sbin/estab.sh //內容以下
#!/bin/bash ##獲取80端口併發鏈接數 netstat -ant |grep ':80 ' |grep -c ESTABLISHED
chmod 755 /usr/local/sbin/estab.sh
客戶端上編輯配置文件
vim /etc/zabbix/zabbix_agentd.conf //增長
UnsafeUserParameters=1 //表示使用自定義腳本 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,若是沒有參數則能夠省略,腳本爲/usr/local/sbin/estab.sh
重啓zabbix-agent服務 systemctl restart zabbix-agent
首先到服務端驗證,執行命令
zabbix_get -s 192.168.36.131 -p 10050 -k 'my.estab.count'
安裝該命令,使用yum list來查安裝包
而後在zabbix監控中心(瀏覽器)配置增長監控項目:主機→監控項→建立監控項
鍵值寫my.estab.count
添加該項目後,到「監測中」→ 「最新數據」查看剛添加的項目是否有數據出現
有了數據就能夠添加圖形了 「配置」→「主機」 →「圖形」 →「建立圖形」
使用163或者QQ郵箱發告警郵件
首先登陸你的163郵箱,設置開啓POP三、IMAP、SMTP服務
開啓並記錄受權碼
而後到監控中心設置郵件告警
「管理」,「報警媒介類型」,「建立媒體類型」
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
服務器上,建立報警腳本mail.py
vim /usr/lib/zabbix/alertscripts/mail.py //內容參考
#!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText import sys mail_user = '1232323232@163.com' mail_pass = 'xxxxxxxxxx' def send_mail(to_list,subject,content): me = "zabbix 監控告警平臺"+"<"+mail_user+">" msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP("smtp.163.com", 25) s.login(mail_user,mail_pass) s.sendmail(me,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])
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
測試:
收到了
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
「新的觸發條件」,A維護狀態 非在 維護,B觸發器示警度>=未分類
「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」 切換到「恢復操做」,把信息改爲以下
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
點擊「新的」,「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」
建立新的觸發器:系統負載,讓其最新值<1,就報警
而後在儀表盤裏就能發現問題那欄有報警信息:
郵件成功發送!
而後就觸發器修改一下,大於1:
而後儀表盤問題裏面問題就是綠色了,已解決,還回復了一封郵件: