Linux監控平臺搭建-zabbix

常見開源監控軟件

cacti、nagios、zabbix、smokeping、open-falcon等等
 cacti、smokeping偏向於基礎監控,成圖很是漂亮
 cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖
 open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究
 後續以介紹zabbix爲主

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 客戶端軟件,負責採集各個監控服務或項目的數據,並上報

zabbix監控流程圖

安裝zabbix

官網下載地址 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

修改管理員密碼:

修改密碼時還能把語言修改了,更新完後刷新頁面,就變成中文了,以下圖所示:

忘記Admin密碼如何作

 進入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

測試:

收到了

建立一個接受告警郵件的用戶,「管理」,「用戶」,「建立用戶」,「報警媒介」,類型選擇「baojing」,注意用戶的權限,若是沒有須要到用戶組去設置權限  

設置動做,「配置」,「動做」,「建立動做」,名稱寫「sendmail」(自定義),「操做」頁面,內容以下

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:

而後儀表盤問題裏面問題就是綠色了,已解決,還回復了一封郵件:

相關文章
相關標籤/搜索