Erlang監(jiān)控工具之OS_MON

Erlang監(jiān)測(cè)系統(tǒng)CPU、內(nèi)存、磁盤

os_mon

Erlang的os_mon服務(wù)中提供了一些用于監(jiān)測(cè)系統(tǒng)信息的服務(wù)
cpu_sup:監(jiān)測(cè)CPU負(fù)載和使用率(Unix)
disksup:監(jiān)測(cè)磁盤(Unix、Windows)
memsup:監(jiān)測(cè)內(nèi)存(Unix、Windows、VxWorks)
os_sup:監(jiān)測(cè)系統(tǒng)日志(Solaris、Windows)

使用os_mon進(jìn)行監(jiān)測(cè)先必須啟動(dòng)監(jiān)測(cè)服務(wù)application:start(os_mon) ,因?yàn)閛s_mon服務(wù)依賴于sasl服務(wù),先必須啟

動(dòng)sasl服務(wù),application:start(sasl) ,否則會(huì)返回{error,{not_started,sasl}} 錯(cuò)誤。os_mon提供的四種監(jiān)測(cè)服

務(wù)中默認(rèn)會(huì)啟動(dòng)三種服務(wù):cpu_sup、disksup和memsup,如果需要自己設(shè)置啟動(dòng)的監(jiān)測(cè)服務(wù),可以修改os_mon.app

文件中的配置參數(shù)
start_cpu_sup = bool()
start_disksup = bool()
start_memsup = bool()
start_os_sup = bool()
等于true時(shí)啟動(dòng),等于false時(shí)不啟動(dòng)。os_mon.app文件在erlang的安裝目錄下../erl5.8.3/lib/os_mon-2.2.5

/ebin 。

cpu_sup

cpu監(jiān)測(cè)在5.8.3版本中只能用于Solaris和Linux操作系統(tǒng),負(fù)載值與Unix進(jìn)程運(yùn)行前在隊(duì)列中的排隊(duì)時(shí)間成正比,

因此值越大意味著負(fù)載越高,返回值除以256為rup和top命令中顯示的值。avg1/0,avg5/0 和avg15/0 函數(shù)計(jì)算負(fù)載,

util/0 和util/1 函數(shù)計(jì)算CPU使用率。在Linux系統(tǒng)中,必須保證/proc文件目錄能被cpu_sup服務(wù)訪問(wèn),如果不能監(jiān)

測(cè)服務(wù)會(huì)停止

模塊中的函數(shù)列表
nprocs() -> UnixProcesses | {error, Reason}
返回UNIX進(jìn)程數(shù)
avg1() -> SystemLoad | {error, Reason}
返回最后1分鐘系統(tǒng)的負(fù)載
avg5() -> SystemLoad | {error, Reason}
返回最后5分鐘系統(tǒng)的負(fù)載
avg15() -> SystemLoad | {error, Reason}
返回最后15分鐘系統(tǒng)的負(fù)載
util() -> CpuUtil | {error, Reason}
返回CPU使用率
util(Opts) -> UtilSpec | {error, Reason}
返回CPU使用率的詳細(xì)信息

調(diào)用這些函數(shù)取CPU監(jiān)測(cè)數(shù)據(jù)時(shí),如果前后兩次調(diào)用,數(shù)值沒(méi)有變化時(shí)顯示為0,有點(diǎn)奇怪

disksup

disksup是一個(gè)用來(lái)監(jiān)測(cè)磁盤空間的進(jìn)程,適用于Unix和Windows系統(tǒng)。監(jiān)測(cè)服務(wù)定期檢查磁盤,對(duì)于每個(gè)磁盤或分

區(qū),在它使用超過(guò)一定的可用空間量,通過(guò){{disk_almost_full,MountedOn},[]} 設(shè)置產(chǎn)生報(bào)警。在Unix下所有的

本地磁盤都會(huì)被監(jiān)測(cè),包括存在的交換分區(qū)。在WIN32下所有類型為“FIXED_DISK”邏輯驅(qū)動(dòng)器都會(huì)被檢查。

配置監(jiān)控間隔時(shí)間和閥值
disk_space_check_interval = int()>0
監(jiān)測(cè)間隔時(shí)間,單位為分鐘,默認(rèn)為30分鐘。
disk_almost_full_threshold = float()
監(jiān)測(cè)閥值,磁盤使用率達(dá)到多少時(shí)產(chǎn)生告警,默認(rèn)為80,單位是百分比。

模塊中的函數(shù)列表
get_disk_data() -> [DiskData]
返回最后一次磁盤檢查結(jié)果
get_check_interval() -> MS
獲取監(jiān)測(cè)間隔時(shí)間,單位是毫秒
set_check_interval(Minutes) -> ok
設(shè)置監(jiān)測(cè)間隔時(shí)間,這個(gè)設(shè)置在下一次監(jiān)測(cè)時(shí)生效,服務(wù)退出后,這個(gè)值會(huì)失效,重啟服務(wù)后使用默認(rèn)值
get_almost_full_threshold() -> Percent
獲取監(jiān)測(cè)閥值,為磁盤使用率
set_almost_full_threshold(Float) -> ok
設(shè)置監(jiān)測(cè)閥值,服務(wù)重啟后,設(shè)置失效,使用默認(rèn)值

memsup

memsup用來(lái)監(jiān)控系統(tǒng)內(nèi)存和各個(gè)進(jìn)程內(nèi)存的使用率,適用于Unix、Windows和VxWorks系統(tǒng),定時(shí)監(jiān)測(cè)內(nèi)存,如果內(nèi)

存使用超過(guò)系統(tǒng)分配的一定值,通過(guò){system_memory_high_watermark, []} 設(shè)置產(chǎn)生告警。如果系統(tǒng)中任何Erlang

進(jìn)程使用內(nèi)存超過(guò)在總內(nèi)存中的一定百分比,通過(guò)設(shè)置{process_memory_high_watermark,Pid} 產(chǎn)生告警。

配置監(jiān)測(cè)間隔時(shí)間和閥值
memory_check_interval = int()>0
以分鐘為刻度,默認(rèn)為1分鐘
system_memory_high_watermark = float()
內(nèi)存使用閥值,默認(rèn)為80,單位是百分比
process_memory_high_watermark = float()
單個(gè)Erlang進(jìn)程使用閥值,默認(rèn)為5,單位是百分比
memsup_helper_timeout = int()>0
等待監(jiān)測(cè)結(jié)果的超時(shí)時(shí)間,默認(rèn)為30秒
memsup_system_only = bool()
設(shè)置是否只監(jiān)控系統(tǒng)內(nèi)存使用率還是同時(shí)監(jiān)測(cè)Erlang進(jìn)程內(nèi)存使用率,默認(rèn)為false

模塊中的函數(shù)列表
get_memory_data() -> {Total,Allocated,Worst}
獲取系統(tǒng)總內(nèi)存,使用內(nèi)存,每個(gè)Erlang進(jìn)程的使用內(nèi)存
get_system_memory_data() -> MemDataList
獲取系統(tǒng)內(nèi)存使用的詳細(xì)信息
get_os_wordsize() -> Wordsize
獲取操作系統(tǒng)的位數(shù)
get_check_interval() -> MS
獲取監(jiān)測(cè)間隔時(shí)間,單位毫秒
set_check_interval(Minutes) -> ok
設(shè)置監(jiān)測(cè)間隔時(shí)間,單位分鐘
get_procmem_high_watermark() -> int()
獲取每一進(jìn)程內(nèi)存使用告警閥值
set_procmem_high_watermark(Float) -> ok
設(shè)置每一進(jìn)程內(nèi)存告警閥值
get_sysmem_high_watermark() -> int()
獲取系統(tǒng)內(nèi)存使用閥值
set_sysmem_high_watermark(Float) -> ok
設(shè)置系統(tǒng)內(nèi)存使用閥值
get_helper_timeout() -> Seconds
獲取監(jiān)測(cè)數(shù)據(jù)返回等待時(shí)間
set_helper_timeout(Seconds) -> ok
設(shè)置監(jiān)測(cè)數(shù)據(jù)返回等待時(shí)間

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容