Linux监控平台搭建zabbix
內容摘要
- ?Linux監控平臺介紹
- zabbix監控介紹
- 安裝zabbix
- 忘記Admin密碼如何做
- 主動模式和被動模式
- 添加監控主機
- 添加自定義模板
- 處理圖形中的亂碼
- 自動發現
- 添加自定義監控項目
- 配置郵件告警
- 測試告警
- 不發郵件的問題處理
一、Linux監控平臺介紹
監控對于網站來說是非常重要,即使是大公司由于監控做得不到位,最終會導致因為服務器的不夠穩定,客戶對其不夠信任,而流失大量客戶。
- 通常監控軟件有下面幾款,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
- ?zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操作數據
- zabbix有服務5個組件
三、?安裝zabbix
安裝zabbix可以直接使用yum安裝,但是epel擴展源中安裝的版本比較久,因此我們自己去官網上下載安裝zabbix的倉庫
- 官網下載地址 www.zabbix.com/download 選擇對應版本并復制提供的網站。
- 根據提示下載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,該倉庫可以指定下載對應的zabbix版本
- 服務端使用yum安裝zabbix,此過程是自帶安裝httpd和php的: yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
- 安裝MySQL,因為已經安裝過所以省略該步驟
- 修改mysql的配置文件,增加一行字符集:vim /etc/my.cnf
character_set_server = utf8
- 重啟mysqld服務后,進入mysql命令行,創建zabbix庫:create database zabbix character set utf8;
- 創建用戶:grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbix';
- 導入原始數據:
- 啟動apache(需關閉nginx):systemctl start httpd
- 設置為開機啟動:systemctl enable httpd
- 啟動zabbix:systemctl start zabbix-server
- 設置為zabbix為開機啟動:systemctl enable zabbix-server
- 檢測zabbix監聽端口發現服務沒有起來
- 查看zabbix日志:less /var/log/zabbix/zabbix_server.log? 顯示無法連接mysql
- 更改zabbix server的配置文件:vim /etc/zabbix/zabbix_server.conf
- 指定數據庫的IP:DBHost=127.0.0.1
- 添加數據庫用戶的密碼:DBPassword=zabbix
- 重啟zabbix:systemctl restart zabbix-server
- 查看監聽端口:netstat -lntp |grep zabbix
- 使用游覽器在web界面配置zabbix:192.168.157.128/zabbix/
- 點擊next step后查看fail的項目,這里發現PHP的timezone(時區)沒有設置
- 修改php默認的配置文件:vim /etc/php.ini
- 重啟apache:systemctl restart httpd
- 再次查看zabbix安裝界面顯示為OK
- 繼續下一步,設置mysql相關設置
- 填寫zabbix server
- 安裝成功
- 填寫用戶名和密碼 默認用戶名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
- 定義服務端的ip:Server=127.0.0.1修改為Server=192.168.157.128
- 定義主動模式時的ip:ServerActive=127.0.0.1修改為ServerActive=19168.80.104
- 定義主機名字:Hostname=aming-02
- 啟動zabbix:systemctl start zabbix-agent
- 設置為開機啟動:systemctl enable zabbix-agent
- 查看監聽端口:客戶端為10050
四、忘記Admin密碼如何做
- 連接mysql數據庫: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
五、主動模式和被動模式
- ?主動或者被動是相對客戶端來講的
- ?被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,并把監控信息傳遞給服務端
- ?主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。
- 當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。
- ?服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式
六、添加監控主機
- 添加主機需要先創建主機群組:配置——主機群組——創建主機群組
- 創建主機群組:zhaoyujie-test
- 添加主機到主機群組:主機—創建主機 —主機名稱和可見名稱—選擇群組—添加agent的IP地址 —添加
- 應用集就是監控項目的集合,即把監控項目分在多個組里
- 監控項——包括所有的監控的項目
- 觸發器—— 針對某個監控項目而設定的告警規則
- 圖形——把歷史數據做出圖表顯示
- 自動發現規則—— 自動發現客戶端系統的網卡流量、 文件系統、 磁盤、 分區使用情況等
- Web監測——監控某個網站
七、添加自定義模板
- 添加自定義模:模版—創建模版—添加— 模版名字和可見的名稱— 選擇template— 添加
- 添加監控項目到自定義模版中:選擇其他模版(這里用 Template OS Linux)中的某個項目—復制—選擇template 的 test
- 同理可以使觸發器、圖形、應用集、添加主機需要的項目,但只有自動發現是不能通過此方法來添加的
- 自動發現可以使用添加鏈接模板的方式實現:選擇 test—鏈接模版—選擇鏈接的模版—添加—更新
- 取消模版鏈接,刪除不用監控的項目(取消鏈接并清理會同時把模版中的監控項目一并清理)
- 把自定義模板添加到主機上
八、處理圖形中的亂碼
- 查看自定義主機的圖形發現亂碼,原因是缺少對應的字庫。這是因為在zabbix的字體庫中沒有中文字體,需要從windows上借用一個過來
?
- 在服務端編輯文件? vim /usr/share/zabbix/include/defines.inc.php?? 搜索ZBX_FONTPATH
- 第一行是定義字庫目錄的路徑,路徑是相對路徑。絕對路徑是 /usr/share/zabbix/fonts/下
- 第二行是定義字庫的名字為graphfont
- 移動到字庫目錄下:cd /usr/share/zabbix/fonts/
- 查看文件發現graphfont.ttf是一個軟鏈接文件,真正的字庫在/usr/share/fonts/dejavu/DejaVuSans.ttf下
- 使用xftp拷貝字庫:windows的字庫目錄C:\Windows\Fonts? 先復制一個中文字庫到桌面,再上傳到服務端下
- 更改原來的字庫名:mv graphfont.ttf graphfont.ttf.bak
- 改為默認字庫名的軟連接文件: ln -s simsun.ttc graphfont.ttf
- 回到web圖形查看,顯示正確。
- 添加自定義圖形:圖形 —創建圖形 — 名稱—添加監控項— 添加
九、自動發現
- 默認的自動發信數據更新間隔為1小時,太過漫長,我們可以將它設置縮短到合理的時間內
- 更改網卡的自動發現間隔:選擇網卡的自動發現 — 數據更新間隔 1m —更新
- 重啟服務端zabbix-server和客戶端的zabbix-agent
- 出現新的圖形后可以將時間修改為10分鐘,防止它影響性能
?
?
- 可以在對應鏈接的模板中,修改圖形的一些細節:模版 —選擇test模版 —自動發現 —Network interface discovery —圖形原型
十、添加自定義監控項目
需求:監控某臺web的80端口連接數,并出圖
- 到客戶端定義腳本: 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
- ?重啟zabbix-agent服務: systemctl restart zabbix-agent
- 前往服務端使用命令驗證腳本是否可以識別:zabbix_get -s 192.168.133.132 -p 10050 -k 'my.estab.count‘
- 在zabbix監控中心(瀏覽器)配置增加監控項目:主機—監控項—創建監控項—鍵值填my.estab.count—添加
- 創建對應的圖表:主機 —圖形 —創建圖形 —填上名稱 —選擇對應的監控項
- 創建對應的觸發器:主機 —觸發器 —創建觸發器 —填上名稱和嚴重性 —添加表達式 —選擇對應的監控項 —填上對應的功能和N值 —添加
十一、配置郵件告警
- 登錄163或qq郵箱 并設置 POP3、IMAP、SMTP服務,此處以163為例
- 在監控中心自定義告警:管理 —報警媒介類型 —創建媒體類型 —名稱 —類型 腳本 —腳本名稱 —參數 —添加
- 設置參數:{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
- 在服務端配置文件中定義了報警郵件腳本放置的路徑/etc/zabbix/zabbix_server.conf:
- 編輯并創建腳本寫入一下內容: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')) //如果發送的郵件有亂碼,可以嘗試把這行改成如下:
??????? 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郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的用戶名和密碼放到網上公開,否則你會死的很慘)
??? sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)
if __name__ == "__main__":
??? main()
???
???
#####腳本使用說明######
#1. 首先定義好腳本中的郵箱賬號和密碼
#2. 腳本執行命令為:python mail.py 目標郵箱 "郵件主題" "郵件內容"
- 修改腳本權限: chmod 755 /usr/lib/zabbix/alertscripts/mail.py
- 測試腳本:python mail.py? xxxxxx@163.com "test" "test"
- 監控中心處創建發送告警郵件的,用戶先創建組(或者添加到已有群組),再創建用戶:管理 —創建新用戶 —別名 —群組—密碼—語言—報警媒介—添加
- 添加進現有的群組時,權限需要在群組中修改:管理—用戶群組—用戶所在群組—權限—選擇全部—權限讀寫—添加—更新
- 設置動作:配置—動作—創建動作—名稱寫“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}
- 設置動作:配置—動作—操作—新的
- 設置動作:配置—動作—恢復操作—默認信息輸入如下內容
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}? {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
- 配置—動作—恢復操作—新的
十二、測試告警
- 創建一個自定義的觸發器用于告警:配置—主機—需要測試的主機—觸發器—創建觸發器
- 系統負載,1分鐘負載小于0時告警
- 查看監測:顯示報警完成
- 查看郵箱:發現報警郵件
- 在把1分鐘內系統負載改為大于1,解除警報。
- 收到恢復郵件:
十三、不發郵件的問題處理
- 用戶權限
- 用戶媒介有沒有設置郵箱
- 發郵件腳本的權限是否755
- 腳本的位置是否在/usr/lib/zabbix/alertscripts/下
- 發郵件腳本是否能夠發送郵件
- zabbix配置動作是否配置正確
- 郵箱服務器可能存在波動,更換告警的郵箱
- 問題依然沒有解決時,恢復快照嘗試重新安裝配置一遍
十四、擴展
- zabbix監控交換機(思科) http://tryrus.blog.51cto.com/10914693/1789847
- zabbix遠程執行命令 http://www.ywnds.com/?p=6610
- zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399
- zabbix監控tomcat(版本有點老,大家只需要參考步驟,不能照搬) http://www.fblinux.com/?p=616
總結
以上是生活随笔為你收集整理的Linux监控平台搭建zabbix的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cool Edit Pro 2.1.0
- 下一篇: X-Analyser 总线分析软件:CA