日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

zabbix的自定义监控

發(fā)布時(shí)間:2024/3/12 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zabbix的自定义监控 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

進(jìn)程和日志

  • 有的時(shí)候zabbix提供的監(jiān)控項(xiàng)目,不能滿足我們生產(chǎn)環(huán)境下的監(jiān)控需求,此時(shí)我們就要按照zabbix的規(guī)范自定義監(jiān)控項(xiàng)目,達(dá)到監(jiān)控的目的
  • zabbix_get:模擬zabbix_server和agent獲取數(shù)據(jù)
  • 相關(guān)概念
  • item: Items是從agnet主機(jī)里面獲取的所有數(shù)據(jù)。通常情況下我叫itme為監(jiān)控項(xiàng),item由key+參數(shù)組成
  • Key:我們可以理解為key是item的唯一標(biāo)識(shí),在agent端有很多監(jiān)控項(xiàng),zabbix-server根據(jù)key區(qū)分不同的監(jiān)控項(xiàng)
  • trigger:觸發(fā)器是建立在item數(shù)據(jù)上的,具有閾值觸發(fā)事件的功能
    基本格式: :.()}
    server:agent名稱,加入主機(jī)時(shí)配置的
    key:就是上面說(shuō)的key
    function:對(duì)閾值進(jìn)行操作的函數(shù),以下函數(shù)
    operate:表達(dá)式
    constant:常量

例如:{docker02:proc.mysql.last()}<>1

  • 不用擔(dān)心trigger表達(dá)式不好寫(xiě),在定義好item后,在zabbix點(diǎn)點(diǎn)就自動(dòng)生成了
zabbix_get -s 192.168.161.67 -k ckproc[postfix] 3 # -s:指定agent地址 # -p:agent端口 # -k:指定item的key # [postfix]:向腳本傳遞的參數(shù)(用逗號(hào)分隔)

下面以監(jiān)控postfix服務(wù)進(jìn)程為例,做了自定義監(jiān)控


1. zabbix_server與zabbix_agent

  • zabbix_server通過(guò)發(fā)送key給zabbix_agent,然后agent端口根據(jù)key,把所要監(jiān)控的item的最新數(shù)據(jù)返回給server端

2. 自定義監(jiān)控項(xiàng)

  • 自定義腳本格式
key[*],[command|sh] # <key[參數(shù)]>,<命令或者腳本> # [*]:固定格式,表示server端是否傳過(guò)來(lái)參數(shù),在命令或者腳本中用$1,23...引用,shell腳本中的引用$$1,2,3..引用, # 如果server端不傳參數(shù),[*]可以不寫(xiě)

2.1 修改agent端配置文件,自定義key

vim /usr/local/etc/zabbix_agentd.conf
  • 做以下修改
UnsafeUserParameters=1 # 默認(rèn)為0,表示不允許自定義key # 監(jiān)控*進(jìn)程是否存在,[*]是server端傳遞參數(shù),是服務(wù)名稱 UserParameter=ckproc[*],/usr/bin/bash /scripts/proc.sh $1

然后寫(xiě)腳本

mkdir /scripts vim /scripts/proc.sh #!/bin/bash proc_count=$(ps -ef|grep -Ev "grep|$0" |grep -c $1) echo $proc_count chown -R zabbix.zabbix /scripts/ chmod +x /scripts/*

2.2 web頁(yè)面配置,加入自定義監(jiān)控項(xiàng)

  • 【配置】->【主機(jī)】,點(diǎn)擊所要監(jiān)控的主機(jī)
  • 點(diǎn)擊【監(jiān)控項(xiàng)】
  • 點(diǎn)擊右上角【創(chuàng)建監(jiān)控項(xiàng)】
  • 創(chuàng)建監(jiān)控項(xiàng)
    • 這里的key值對(duì)應(yīng)我們?cè)赼gent端自定義的key

    • 重啟agent服務(wù)
    pkill zabbix zabbix_agentd

    2.3 查看返回的數(shù)據(jù):【檢測(cè)中】->【最新數(shù)據(jù)】

    最新數(shù)據(jù)是zabbix所有監(jiān)控項(xiàng)的收集的數(shù)據(jù)的概覽,從這可以看到監(jiān)控項(xiàng)最新的監(jiān)控值

    從圖中可以看到,postfix監(jiān)控項(xiàng)返回的數(shù)值是3,說(shuō)明postfix的進(jìn)程數(shù)為3,代表postfix運(yùn)行正常,如果想要可以郵件報(bào)警,可以給這個(gè)自定義的添加觸發(fā)器,參考“Zabbix監(jiān)控組件及流程”一章


    2.4 測(cè)試結(jié)果:


    下面是以監(jiān)控日志,做了自定義監(jiān)控


    注:監(jiān)控日志用shell腳本難以實(shí)現(xiàn)記錄之前已經(jīng)看過(guò)的日志,為了解決這個(gè)問(wèn)題,我們用python來(lái)監(jiān)控

    • 編寫(xiě)Python程序,可以點(diǎn)擊查看

    • 說(shuō)明:第一個(gè)參數(shù)為日志文件名(必須有,相對(duì)路徑、絕對(duì)路徑均可)

    • 第二個(gè)參數(shù)為“記錄之前所看位置”的文件路徑(可選項(xiàng),若不設(shè)置則默認(rèn)為/tmp/logseek文件。相對(duì)路徑、絕對(duì)路徑均可)

    • 第三個(gè)參數(shù)為搜索關(guān)鍵字,默認(rèn)為 Error

    • 將腳本文件下載后上傳到/scripts/目錄下,將文件賦予執(zhí)行權(quán)限并將屬主和屬組改為zabbix

    放腳本路徑和上一個(gè)例子一樣,如果不做上一個(gè)例子,自行創(chuàng)建目錄,更改屬主屬組 vim /scripts/log.py #!/usr/bin/env python3 import sys import redef prePos(seekfile):global curpostry:cf = open(seekfile)except IOError:curpos = 0return curposexcept FileNotFoundError:curpos = 0return curposelse:try:curpos = int(cf.readline().strip())except ValueError:curpos = 0cf.close()return curposcf.close()return curposdef lastPos(filename):with open(filename) as lfile:if lfile.readline():lfile.seek(0,2)else:return 0lastPos = lfile.tell()return lastPosdef getSeekFile():try:seekfile = sys.argv[2]except IndexError:seekfile = '/tmp/logseek'return seekfiledef getKey():try:tagKey = str(sys.argv[3])except IndexError:tagKey = 'Error'return tagKeydef getResult(filename,seekfile,tagkey):destPos = prePos(seekfile)curPos = lastPos(filename)if curPos < destPos:curpos = 0try:f = open(filename)except IOError:print('Could not open file: %s' % filename)except FileNotFoundError:print('Could not open file: %s' % filename)else:f.seek(destPos)while curPos != 0 and f.tell() < curPos:rresult = f.readline().strip()global resultif re.search(tagkey, rresult):result = 1breakelse:result = 0with open(seekfile,'w') as sf:sf.write(str(curPos))finally:f.close()return resultif __name__ == "__main__":result = 0curpos = 0tagkey = getKey()seekfile = getSeekFile()result = getResult(sys.argv[1],seekfile,tagkey)print(result)chmod +x /scripts/log.py chown zabbix.zabbix log.py
    • 修改客戶端/usr/locla/etc/zabbix_agentd.conf文件
    UnsafeUserParameters=1 UserParameter=cklog[*],/usr/bin/python /scripts/log.py $1 $2 $3
    • 創(chuàng)建日志文件(有,則不需要?jiǎng)?chuàng)建),創(chuàng)建存放讀取記錄的目錄并設(shè)置屬主和屬組為zabbix
    cat >> /tmp/zabbix_agentd.log << EOF sklfs sfkfnkslf error errorksdm Error failed failed whs itwhs qwszc EOF
    • 重新啟動(dòng)服務(wù)
    pkill zabbix zabbix_agentd
    • 在服務(wù)端手動(dòng)執(zhí)行腳本
    zabbix_get -s 192.168.161.67 -k cklog[/tmp/zabbix_agentd.log,/tmp/itwhs,failed] 1
    • 添加主機(jī)監(jiān)控項(xiàng)

    • 給監(jiān)控項(xiàng)添加觸發(fā)器

    • 添加報(bào)警媒(介參考“Zabbix監(jiān)控組件及流程”一章)
    • 添加用戶報(bào)警類型(介參考“Zabbix監(jiān)控組件及流程”一章)
    • 添加動(dòng)作(介參考“Zabbix監(jiān)控組件及流程”一章)

    測(cè)試結(jié)果:

    總結(jié)

    以上是生活随笔為你收集整理的zabbix的自定义监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。