Linux监控平台搭建zabbix
內(nèi)容摘要
- ?Linux監(jiān)控平臺介紹
- zabbix監(jiān)控介紹
- 安裝zabbix
- 忘記Admin密碼如何做
- 主動模式和被動模式
- 添加監(jiān)控主機(jī)
- 添加自定義模板
- 處理圖形中的亂碼
- 自動發(fā)現(xiàn)
- 添加自定義監(jiān)控項目
- 配置郵件告警
- 測試告警
- 不發(fā)郵件的問題處理
一、Linux監(jiān)控平臺介紹
監(jiān)控對于網(wǎng)站來說是非常重要,即使是大公司由于監(jiān)控做得不到位,最終會導(dǎo)致因為服務(wù)器的不夠穩(wěn)定,客戶對其不夠信任,而流失大量客戶。
- 通常監(jiān)控軟件有下面幾款,cacti、nagios、zabbix、smokeping、open-falcon等等。
- ?cacti、smokeping偏向于基礎(chǔ)監(jiān)控,成圖非常漂亮
- ?cacti、nagios、zabbix服務(wù)端監(jiān)控中心,需要php環(huán)境支持,其中zabbix和cacti都需要mysql作為數(shù)據(jù)存儲,nagios不用存儲歷史數(shù)據(jù),注重服務(wù)或者監(jiān)控項的狀態(tài),zabbix會獲取服務(wù)或者監(jiān)控項目的數(shù)據(jù),會把數(shù)據(jù)記錄到數(shù)據(jù)庫里,從而可以成圖
- ?open-falcon為小米公司開發(fā),開源后受到諸多大公司和運維工程師的追捧,適合大企業(yè),滴滴、360、新浪微博、京東等大公司在使用這款監(jiān)控軟件,值得研究
二、zabbix監(jiān)控介紹
- ?C/S架構(gòu),基于C++開發(fā),監(jiān)控中心支持web界面配置和管理
- ?單server節(jié)點可以支持上萬臺客戶端
- ?最新版本3.4,官方中文文檔https://www.zabbix.com/manuals
- ?zabbix-server 監(jiān)控中心,接收客戶端上報信息,負(fù)責(zé)配置、統(tǒng)計、操作數(shù)據(jù)
- zabbix有服務(wù)5個組件
三、?安裝zabbix
安裝zabbix可以直接使用yum安裝,但是epel擴(kuò)展源中安裝的版本比較久,因此我們自己去官網(wǎng)上下載安裝zabbix的倉庫
- 官網(wǎng)下載地址 www.zabbix.com/download 選擇對應(yīng)版本并復(fù)制提供的網(wǎng)站。
- 根據(jù)提示下載zabbix的倉庫的rpm包:wget? https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
- 安裝rpm包:rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
- ?安裝rpm后在/etc/yum.repos.d/中就會多一個倉庫zabbix.repo,該倉庫可以指定下載對應(yīng)的zabbix版本
- 服務(wù)端使用yum安裝zabbix,此過程是自帶安裝httpd和php的: yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
- 安裝MySQL,因為已經(jīng)安裝過所以省略該步驟
- 修改mysql的配置文件,增加一行字符集:vim /etc/my.cnf
character_set_server = utf8
- 重啟mysqld服務(wù)后,進(jìn)入mysql命令行,創(chuàng)建zabbix庫:create database zabbix character set utf8;
- 創(chuàng)建用戶:grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbix';
- 導(dǎo)入原始數(shù)據(jù):
- 啟動apache(需關(guān)閉nginx):systemctl start httpd
- 設(shè)置為開機(jī)啟動:systemctl enable httpd
- 啟動zabbix:systemctl start zabbix-server
- 設(shè)置為zabbix為開機(jī)啟動:systemctl enable zabbix-server
- 檢測zabbix監(jiān)聽端口發(fā)現(xiàn)服務(wù)沒有起來
- 查看zabbix日志:less /var/log/zabbix/zabbix_server.log? 顯示無法連接mysql
- 更改zabbix server的配置文件:vim /etc/zabbix/zabbix_server.conf
- 指定數(shù)據(jù)庫的IP:DBHost=127.0.0.1
- 添加數(shù)據(jù)庫用戶的密碼:DBPassword=zabbix
- 重啟zabbix:systemctl restart zabbix-server
- 查看監(jiān)聽端口:netstat -lntp |grep zabbix
- 使用游覽器在web界面配置zabbix:192.168.157.128/zabbix/
- 點擊next step后查看fail的項目,這里發(fā)現(xiàn)PHP的timezone(時區(qū))沒有設(shè)置
- 修改php默認(rèn)的配置文件:vim /etc/php.ini
- 重啟apache:systemctl restart httpd
- 再次查看zabbix安裝界面顯示為OK
- 繼續(xù)下一步,設(shè)置mysql相關(guān)設(shè)置
- 填寫zabbix server
- 安裝成功
- 填寫用戶名和密碼 默認(rèn)用戶名Admin 密碼zabbix
- 更改為自己的密碼和語言 選擇 Administration — Users — Admin 用戶 —Change password和Langueage
- 修改成功
- 客戶端yum安裝zabbix,此過程是自帶安裝httpd和php的:yum install -y zabbix-agent
- 修改客戶端zabbix-agent的配置文件:vim? /etc/zabbix/zabbix_agentd.conf
- 定義服務(wù)端的ip:Server=127.0.0.1修改為Server=192.168.157.128
- 定義主動模式時的ip:ServerActive=127.0.0.1修改為ServerActive=19168.80.104
- 定義主機(jī)名字:Hostname=aming-02
- 啟動zabbix:systemctl start zabbix-agent
- 設(shè)置為開機(jī)啟動:systemctl enable zabbix-agent
- 查看監(jiān)聽端口:客戶端為10050
四、忘記Admin密碼如何做
- 連接mysql數(shù)據(jù)庫:mysql -uroot -p zabbix
- 切換至zabbix庫:use zabbix;
- 密碼保存在zabbix庫的users表中:desc users;
- ?更改zabbix管理員密碼:update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
- passwd=md5('newpasswd')使用md5加密 新密碼為newpasswd
五、主動模式和被動模式
- ?主動或者被動是相對客戶端來講的
- ?被動模式,服務(wù)端會主動連接客戶端獲取監(jiān)控項目數(shù)據(jù),客戶端被動地接受連接,并把監(jiān)控信息傳遞給服務(wù)端
- ?主動模式,客戶端會主動把監(jiān)控數(shù)據(jù)匯報給服務(wù)端,服務(wù)端只負(fù)責(zé)接收即可。
- 當(dāng)客戶端數(shù)量非常多時,建議使用主動模式,這樣可以降低服務(wù)端的壓力。
- ?服務(wù)端有公網(wǎng)ip,客戶端只有內(nèi)網(wǎng)ip,但卻能連外網(wǎng),這種場景適合主動模式
六、添加監(jiān)控主機(jī)
- 添加主機(jī)需要先創(chuàng)建主機(jī)群組:配置——主機(jī)群組——創(chuàng)建主機(jī)群組
- 創(chuàng)建主機(jī)群組:zhaoyujie-test
- 添加主機(jī)到主機(jī)群組:主機(jī)—創(chuàng)建主機(jī) —主機(jī)名稱和可見名稱—選擇群組—添加agent的IP地址 —添加
- 應(yīng)用集就是監(jiān)控項目的集合,即把監(jiān)控項目分在多個組里
- 監(jiān)控項——包括所有的監(jiān)控的項目
- 觸發(fā)器—— 針對某個監(jiān)控項目而設(shè)定的告警規(guī)則
- 圖形——把歷史數(shù)據(jù)做出圖表顯示
- 自動發(fā)現(xiàn)規(guī)則—— 自動發(fā)現(xiàn)客戶端系統(tǒng)的網(wǎng)卡流量、 文件系統(tǒng)、 磁盤、 分區(qū)使用情況等
- Web監(jiān)測——監(jiān)控某個網(wǎng)站
七、添加自定義模板
- 添加自定義模:模版—創(chuàng)建模版—添加— 模版名字和可見的名稱— 選擇template— 添加
- 添加監(jiān)控項目到自定義模版中:選擇其他模版(這里用 Template OS Linux)中的某個項目—復(fù)制—選擇template 的 test
- 同理可以使觸發(fā)器、圖形、應(yīng)用集、添加主機(jī)需要的項目,但只有自動發(fā)現(xiàn)是不能通過此方法來添加的
- 自動發(fā)現(xiàn)可以使用添加鏈接模板的方式實現(xiàn):選擇 test—鏈接模版—選擇鏈接的模版—添加—更新
- 取消模版鏈接,刪除不用監(jiān)控的項目(取消鏈接并清理會同時把模版中的監(jiān)控項目一并清理)
- 把自定義模板添加到主機(jī)上
八、處理圖形中的亂碼
- 查看自定義主機(jī)的圖形發(fā)現(xiàn)亂碼,原因是缺少對應(yīng)的字庫。這是因為在zabbix的字體庫中沒有中文字體,需要從windows上借用一個過來
?
- 在服務(wù)端編輯文件? vim /usr/share/zabbix/include/defines.inc.php?? 搜索ZBX_FONTPATH
- 第一行是定義字庫目錄的路徑,路徑是相對路徑。絕對路徑是 /usr/share/zabbix/fonts/下
- 第二行是定義字庫的名字為graphfont
- 移動到字庫目錄下:cd /usr/share/zabbix/fonts/
- 查看文件發(fā)現(xiàn)graphfont.ttf是一個軟鏈接文件,真正的字庫在/usr/share/fonts/dejavu/DejaVuSans.ttf下
- 使用xftp拷貝字庫:windows的字庫目錄C:\Windows\Fonts? 先復(fù)制一個中文字庫到桌面,再上傳到服務(wù)端下
- 更改原來的字庫名:mv graphfont.ttf graphfont.ttf.bak
- 改為默認(rèn)字庫名的軟連接文件: ln -s simsun.ttc graphfont.ttf
- 回到web圖形查看,顯示正確。
- 添加自定義圖形:圖形 —創(chuàng)建圖形 — 名稱—添加監(jiān)控項— 添加
九、自動發(fā)現(xiàn)
- 默認(rèn)的自動發(fā)信數(shù)據(jù)更新間隔為1小時,太過漫長,我們可以將它設(shè)置縮短到合理的時間內(nèi)
- 更改網(wǎng)卡的自動發(fā)現(xiàn)間隔:選擇網(wǎng)卡的自動發(fā)現(xiàn) — 數(shù)據(jù)更新間隔 1m —更新
- 重啟服務(wù)端zabbix-server和客戶端的zabbix-agent
- 出現(xiàn)新的圖形后可以將時間修改為10分鐘,防止它影響性能
?
?
- 可以在對應(yīng)鏈接的模板中,修改圖形的一些細(xì)節(jié):模版 —選擇test模版 —自動發(fā)現(xiàn) —Network interface discovery —圖形原型
十、添加自定義監(jiān)控項目
需求:監(jiān)控某臺web的80端口連接數(shù),并出圖
- 到客戶端定義腳本: vim /usr/local/sbin/estab.sh
#!/bin/bash
##獲取80端口并發(fā)連接數(shù)
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
- 修改腳本權(quán)限:chmod 755 /usr/local/sbin/estab.sh
- 客戶端上編輯配置文件: vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1?
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
- ?重啟zabbix-agent服務(wù): systemctl restart zabbix-agent
- 前往服務(wù)端使用命令驗證腳本是否可以識別:zabbix_get -s 192.168.133.132 -p 10050 -k 'my.estab.count‘
- 在zabbix監(jiān)控中心(瀏覽器)配置增加監(jiān)控項目:主機(jī)—監(jiān)控項—創(chuàng)建監(jiān)控項—鍵值填my.estab.count—添加
- 創(chuàng)建對應(yīng)的圖表:主機(jī) —圖形 —創(chuàng)建圖形 —填上名稱 —選擇對應(yīng)的監(jiān)控項
- 創(chuàng)建對應(yīng)的觸發(fā)器:主機(jī) —觸發(fā)器 —創(chuàng)建觸發(fā)器 —填上名稱和嚴(yán)重性 —添加表達(dá)式 —選擇對應(yīng)的監(jiān)控項 —填上對應(yīng)的功能和N值 —添加
十一、配置郵件告警
- 登錄163或qq郵箱 并設(shè)置 POP3、IMAP、SMTP服務(wù),此處以163為例
- 在監(jiān)控中心自定義告警:管理 —報警媒介類型 —創(chuàng)建媒體類型 —名稱 —類型 腳本 —腳本名稱 —參數(shù) —添加
- 設(shè)置參數(shù):{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
- 在服務(wù)端配置文件中定義了報警郵件腳本放置的路徑/etc/zabbix/zabbix_server.conf:
- 編輯并創(chuàng)建腳本寫入一下內(nèi)容:vim /usr/lib/zabbix/alertscripts/mail.
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from? subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
??? gserver = 'smtp.qq.com'
??? gport = 25
??? try:
??????? # msg = MIMEText(unicode(content).encode('utf-8')) //如果發(fā)送的郵件有亂碼,可以嘗試把這行改成如下:
??????? msg = MIMEText(content,'plan','utf-8')
??????? msg['from'] = mailfrom
??????? msg['to'] = mailto
??????? msg['Reply-To'] = mailfrom
??????? msg['Subject'] = subject
??????? smtp = smtplib.SMTP(gserver, gport)
??????? smtp.set_debuglevel(0)
??????? smtp.ehlo()
??????? smtp.login(username,password)
??????? smtp.sendmail(mailfrom, mailto, msg.as_string())
??????? smtp.close()
??? except Exception,err:
??????? print "Send mail failed. Error: %s" % err
def main():
??? to=sys.argv[1]
??? subject=sys.argv[2]
??? content=sys.argv[3]
##定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的用戶名和密碼放到網(wǎng)上公開,否則你會死的很慘)
??? sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)
if __name__ == "__main__":
??? main()
???
???
#####腳本使用說明######
#1. 首先定義好腳本中的郵箱賬號和密碼
#2. 腳本執(zhí)行命令為:python mail.py 目標(biāo)郵箱 "郵件主題" "郵件內(nèi)容"
- 修改腳本權(quán)限: chmod 755 /usr/lib/zabbix/alertscripts/mail.py
- 測試腳本:python mail.py? xxxxxx@163.com "test" "test"
- 監(jiān)控中心處創(chuàng)建發(fā)送告警郵件的,用戶先創(chuàng)建組(或者添加到已有群組),再創(chuàng)建用戶:管理 —創(chuàng)建新用戶 —別名 —群組—密碼—語言—報警媒介—添加
- 添加進(jìn)現(xiàn)有的群組時,權(quán)限需要在群組中修改:管理—用戶群組—用戶所在群組—權(quán)限—選擇全部—權(quán)限讀寫—添加—更新
- 設(shè)置動作:配置—動作—創(chuàng)建動作—名稱寫“sendmail”(自定義)——新的觸發(fā)條件"維護(hù)狀態(tài)非在維護(hù)"
- 設(shè)置動作:配置—動作—操作—默認(rèn)信息輸入如下內(nèi)容:
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}? {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
- 設(shè)置動作:配置—動作—操作—新的
- 設(shè)置動作:配置—動作—恢復(fù)操作—默認(rèn)信息輸入如下內(nèi)容
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}? {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
- 配置—動作—恢復(fù)操作—新的
十二、測試告警
- 創(chuàng)建一個自定義的觸發(fā)器用于告警:配置—主機(jī)—需要測試的主機(jī)—觸發(fā)器—創(chuàng)建觸發(fā)器
- 系統(tǒng)負(fù)載,1分鐘負(fù)載小于0時告警
- 查看監(jiān)測:顯示報警完成
- 查看郵箱:發(fā)現(xiàn)報警郵件
- 在把1分鐘內(nèi)系統(tǒng)負(fù)載改為大于1,解除警報。
- 收到恢復(fù)郵件:
十三、不發(fā)郵件的問題處理
- 用戶權(quán)限
- 用戶媒介有沒有設(shè)置郵箱
- 發(fā)郵件腳本的權(quán)限是否755
- 腳本的位置是否在/usr/lib/zabbix/alertscripts/下
- 發(fā)郵件腳本是否能夠發(fā)送郵件
- zabbix配置動作是否配置正確
- 郵箱服務(wù)器可能存在波動,更換告警的郵箱
- 問題依然沒有解決時,恢復(fù)快照嘗試重新安裝配置一遍
十四、擴(kuò)展
- zabbix監(jiān)控交換機(jī)(思科) http://tryrus.blog.51cto.com/10914693/1789847
- zabbix遠(yuǎn)程執(zhí)行命令 http://www.ywnds.com/?p=6610
- zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399
- zabbix監(jiān)控tomcat(版本有點老,大家只需要參考步驟,不能照搬) http://www.fblinux.com/?p=616
總結(jié)
以上是生活随笔為你收集整理的Linux监控平台搭建zabbix的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cool Edit Pro 2.1.0
- 下一篇: linux蓝屏修复工具,linux双系统