2017-04-05 61 views
0

檢查存儲使用情況問題我發現nagios會生成大量的文件寫入。下面的問題我做了一個關於系統檢查由strace的mmap可以在nagios rrd文件上生成大量文字嗎?

#strace -f -p $nagiosServicePID 

[pid 32544] open("/opt/nagios/pnp/var/perfdata/sw-int02/If_GigabitEthernet1_0_29.rrd", O_RDWR) = 5 
[pid 32544] fstat(5, {st_mode=S_IFREG|0644, st_size=4217672, ...}) = 0 
[pid 32544] fadvise64(5, 0, 0, POSIX_FADV_RANDOM) = 0 
[pid 32544] mmap(NULL, 4217672, PROT_READ|PROT_WRITE, MAP_SHARED, 5, 0) = 0x7f252fc3c000 
[pid 32544] madvise(0x7f252fc3c000, 4217672, MADV_RANDOM) = 0 
[pid 32544] madvise(0x7f252fc3c000, 128, MADV_WILLNEED) = 0 
[pid 32544] madvise(0x7f252fc3c000, 1320, MADV_WILLNEED) = 0 
[pid 32544] madvise(0x7f252fc3c000, 1440, MADV_WILLNEED) = 0 
[pid 32544] madvise(0x7f252fc3c000, 16, MADV_WILLNEED) = 0 
[pid 32544] fcntl(5, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0 
[pid 32544] msync(0x7f252fc3c000, 4217672, MS_ASYNC) = 0 
[pid 32544] munmap(0x7f252fc3c000, 4217672) = 0 
[pid 32544] close(5)     = 0 

在CentOS 6.8調用它表明我的Nagios打開RRD文件,寫入到存儲器映射和同步回內存映射到磁盤。 我擔心即使rrd文件被修改爲4個字節,完整的rrd文件也會被重寫到磁盤。它簡單地殺死昂貴的SSD。

難道這是這個巨大的磁盤寫作的原因?

是否可以用nagios減少寫入磁盤的方式?

回答

1

您使用的PNP看起來像這意味着寫入RRD文件的實際文件位於process_perfdata.pl而不是Nagios本身。正在撰寫的函數被稱爲data2rrd。你所要求的基本上是RRDtool的限制。

如果你寫這篇文章看起來很貴,你可能想看看設置RRDcached。 RRDcached會將所有需要發生的寫入操作記錄到特定目錄中的RRD文件,然後以指定的時間間隔同時更新它們全部。

您還可以確保您有足夠的緩衝區高速緩存,以便所有的RRD文件塊在內存中基本上都會更新,並且對磁盤的更改不會太零星。您可以通過確保您有足夠的機器可用內存來做到這一點。此外,您可以調整您的RRD文件(或PNP4Nagios - 我們會在一秒鐘內)來存儲較少的信息,以使它們的整體尺寸更小一些。這裏的權衡是,你最終會得到較少的歷史性能數據。這對你來說可能是也可能不是問題。

您可以通過查看/usr/local/nagios/etc/pnp/rra.cfg/usr/local/nagios/etc/pnp/process_perfdata.cfg來調整PNP。這就是那些文件位於我的系統上的地方,你的里程可能會有所不同。

最後:確保您的系統正在使用最新版本的RRDtool。如果您通過yumapt進行安裝,則可能會過時。我強烈建議從源代碼編譯,因爲很多性能改進和錯誤修復在過去幾年中都找到了方法。

你可以在這裏找到有關RRDtool的更多信息:http://oss.oetiker.ch/rrdtool/index.en.html

希望這有助於!

+0

感謝您的解釋。正如我所看到的,可以使用mmap或舊的fseek方法編譯rrdtool。我也可以自己測試它,或者更具體地在mmap上提出我的問題。 – jshepherd

相關問題