php監控linux伺服器負載,php伺服器狀態監控

本文目錄一覽:

PHP執行linux系統命令的常用函數使用說明

system函數

說明:執行外部程序並顯示輸出資料。

語法:string

system(string

command,

int

[return_var]);

返回值:

字元串

詳細介紹:

本函數就像是

C

語中的函數

system(),用來執行指令,並輸出結果。若是

return_var

參數存在,則執行

command

之後的狀態會填入

return_var

中。同樣值得注意的是若需要處理用戶輸入的資料,而又要防止用戶耍花招破解系統,則可以使用

EscapeShellCmd()。若

PHP

以模塊式的執行,本函數會在每一行輸出後自動更新

Web

伺服器的輸出緩衝暫存區。若需要完整的返回字元串,且不想經過不必要的其它中間的輸出界面,可以使用

PassThru()。

實例代碼:

複製代碼

代碼如下:

?php

$last_line

=

system(‘ls’,

$retval);

echo

‘Last

line

of

the

output:

.

$last_line;

echo

‘hr

/Return

value:

.

$retval;

?

exec函數

說明:執行外部程序。

語法:string

exec(string

command,

string

[array],

int

[return_var]);

返回值:

字元串

詳細介紹:

本函數執行輸入

command

的外部程序或外部指令。它的返回字元串只是外部程序執行後返回的最後一行;若需要完整的返回字元串,可以使用

PassThru()

這個函數。

要是參數

array

存在,command

會將

array

加到參數中執行,若不欲

array

被處理,可以在執行

exec()

之前呼叫

unset()。若是

return_var

array

二個參數都存在,則執行

command

之後的狀態會填入

return_var

中。

值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用

EscapeShellCmd()。

實例代碼:

複製代碼

代碼如下:

?php

echo

exec(‘whoami’);

?

popen函數

說明:打開文件。

語法:int

popen(string

command,

string

mode);

返回值:

整數

詳細介紹:

本函數執行指令開檔,而該文件是用管道方式處理的文件。用本函數打開的文件只能是單向的

(只能讀或只能寫),而且一定要用

pclose()

關閉。在文件操作上可使用

fgets()、fgetss()

fputs()。若是開檔發生錯誤,返回

false

值。

實例代碼:

複製代碼

代碼如下:

?

$fp

=

popen(“/bin/ls”,”r”

);

?

PHP監控linux伺服器負載

在實際項目的應用中,我們由於各種條件的現實,利用PHP來實現伺服器負載監控將是一種更為靈活的方式。

由於Web

Server以及PHP的實現方式所限,我們在現實環境中很難利用PHP去調用一些Linux中需要root許可權才能執行的程序,對此,我從網上找到另外一種方式來繞開這個限制。首先先寫個c程序中轉調用系統命令,然後用PHP去執行此c程序。

c程序

首先寫個c文件,比如/usr/local/ismole/w.c

複製代碼

代碼如下:

#includestdio.h

#includestdlib.h

#includesystypes.h

#includeunistd.h

int

main()

{

uid_t

uid

,euid;

//note

獲得當前的uid

uid

=

getuid();

//note

獲得當前euid

euid

=

geteuid();

//note

交換這兩個id

if(setreuid(euid,

uid))

perror(“setreuid”);

//note

執行將要執行linux系統命令

system(“/usr/bin/w”);

return0;

}

編譯該文件gcc

-o

w

-Wall

w.c,這時會在當前目錄下生成程序w。改變此程序的屬主chmod

u+s

./w。

PHP執行

文件內容如下,放在web目錄下,訪問就會輸出當前的伺服器負載情況。

複製代碼

代碼如下:

?php

/*

More

Original

PHP

Framwork

Copyright

(c)

2007

2008

IsMole

Inc.

$Id:

serverMonitor.php

408

2008-12-02

08:07:40Z

kimi

$

*/

//note

key的驗證過程

if($key

!=

$authkey)

{

//

exit(‘key

error);

}

$last_line

=

exec(‘/usr/local/ismole/w’,

$retval);

$returnArray

=

explode(“load

average:

“,

$retval[0]);

$returnString

=

$returnArray[1];

echo

$returnString; 

 按照上面的實例,我們可以用PHP來做任何我們想執行的Linux系統命令,SVN更新,伺服器監控,備份,恢復,日常維護等等。

如何使用PHP實時監控Linux伺服器的cpu,內存,硬碟信息

1,Linux下可以在/proc/cpuinfo中看到每個cpu的詳細信息。但是對於雙核的cpu,在cpuinfo中會看到兩個cpu。常常會讓人誤以為是兩個單核的cpu。

其實應該通過Physical

Processor

ID來區分單核和雙核。而Physical

Processor

ID可以從cpuinfo或者dmesg中找到.

flags

如果有

ht

說明

支持超線程技術

判斷物理CPU的個數可以查看physical

id

的值,相同則為同一個物理CPU

2,查看內存大小:

cat

/proc/meminfo

|grep

MemTotal

3,其他一些可以查看詳細

linux系統

信息的命令和方法:

uname

-a

#

查看內核/操作系統/

CPU信息

的linux系統信息命令

head

-n

1

/etc/issue

#

查看操作系統版本,是數字1不是字母L

cat

/proc/cpuinfo

#

查看CPU信息的linux系統信息命令

hostname

#

查看計算機名的linux系統信息命令

lspci

-tv

#

列出所有

PCI設備

lsusb

-tv

#

列出所有USB設備的linux系統信息命令

lsmod

#

列出載入的內核模塊

env

#

查看

環境變數

資源

free

-m

#

查看內存使用量和

交換區

使用量

df

-h

#

查看各分區使用情況

du

-sh

#

查看指定目錄的大小

grep

MemTotal

/proc/meminfo

#

查看內存總量

grep

MemFree

/proc/meminfo

#

查看空閑內存量

uptime

#

查看系統

運行時間

、用戶數、負載

cat

/proc/loadavg

#

查看系統負載磁碟和分區

mount

|

column

-t

#

查看掛接的分區狀態

fdisk

-l

#

查看所有分區

swapon

-s

#

查看所有

交換分區

hdparm

-i

/dev/hda

#

查看磁碟參數(僅適用於

IDE設備

)

dmesg

|

grep

IDE

#

查看啟動時IDE設備檢測狀況網路

ifconfig

#

查看所有網路介面的屬性

iptables

-L

#

查看防火牆設置

route

-n

#

查看

路由表

netstat

-lntp

#

查看所有監聽埠

netstat

-antp

#

查看所有已經建立的連接

netstat

-s

#

查看

網路統計

信息進程

ps

-ef

#

查看所有進程

top

#

實時顯示

進程狀態

用戶

w

#

查看活動用戶

id

#

查看指定用戶信息

last

#

查看

用戶登錄

日誌

cut

-d:

-f1

/etc/passwd

#

查看系統所有用戶

cut

-d:

-f1

/etc/group

#

查看系統所有組

crontab

-l

#

查看當前用戶的計劃任務服務

chkconfig

–list

#

列出所有系統服務

chkconfig

–list

|

grep

on

#

列出所有啟動的系統服務程序

rpm

-qa

#

查看所有安裝的軟體包

cat

/proc/cpuinfo

:查看CPU相關參數的linux系統命令

cat

/proc/partitions

:查看linux硬碟和分區信息的系統信息命令

cat

/proc/meminfo

:查看linux系統內存信息的linux系統命令

cat

/proc/version

:查看版本,類似uname

-r

cat

/proc/ioports

:查看設備io埠

cat

/proc/interrupts

:查看中斷

cat

/proc/pci

:查看pci設備的信息

cat

/proc/swaps

:查看所有swap分區的信息

有什麼監控Linux伺服器的工具嗎?

1、Ganglia

是一個集群監控軟體,可以監視和顯示集群中的節點的各種狀態信息,比如:CPU、mem、硬碟利用率、I/O負載、網路流量情況等,同時可以將歷史數據以曲線方式通過php頁面呈現,此軟體主要是用來監控系統性能的軟體,通過曲線可以很容易見到每個節點的工作狀態,對合理調整、分配系統資源,提高系統整體性能起到重要作用。

它是分散式的監控系統,有兩個Daemon,是一個Linux下圖形化監控系統運行性能的軟體,界面美觀、豐富,功能強大。

RRDtool是系統存放和顯示time-series (即網路帶寬、溫度、人數、伺服器負載等) 。並且它提出有用的圖表由處理數據強制執行有些數據密度。

2、Cacti

是一套基於PHP、MySQL、SNMP及RRDTool開發的網路流量監測圖形分析工具,通過snmpget來獲取數據,使用RRDTool繪畫圖形,提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結 構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。

cacti是用php語言實現的一個軟體,它的主要功能是用snmp服務獲取數據,然後用rrdtool儲存和更新數據,當用戶需要查看數據的時候用rrdtool生成圖表呈現給用戶。因此,snmp和rrdtool是cacti的關鍵。

3、Zenoss

是一款智能監控軟體,允許IT管理員依靠單一的WEB控制台來監控網路架構的狀態和健康度。Zenoss Core同時也是開源的網路與系統管理軟體。

Zenoss提供功能豐富的產品,以監測整個IT基礎設施:

網路 -路由器,交換機,防火牆,接入點;

伺服器 -微軟的Windows , Linux , Unix系統,惠普, NetApp,戴爾;

虛擬化 -完整虛擬機虛擬化基礎架構( VI3 )管理, XenSource監測;

應用領域 -Process(程序),Port,網路應用服務, Web服務,資料庫,中間件,商業企業應用方案 ;

4、Argus

是一個網路連接監控器,可以利用它來定製監控網路中符合某種條件的計算機,例如網路空閑、斷開等。

5、Monit

是一款功能非常豐富的進程、文件、目錄和設備的監測軟體,用於UNIX平台,可以自動修復那些已經停止運行的程序,適合處理那些由於多種原因導致的軟體錯誤。

6、Nagios

是一個監視系統運行狀態和網路信息的監視系統,能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等Nagios可運行在Linux/Unix平台之上,同時提供一個可選的基於瀏覽器的WEB界面以方便系統管理人員查看網路狀態,各種系統問題,以及日誌等等。

Nagios的主要功能特點:

監視網路服務(SMTP、POP3、HTTP、NNTP、PING等);

監視主機資源(進程、磁碟等);

簡單的插件設計可以輕鬆擴展Nagios的監視功能;

服務等監視的並發處理;

錯誤通知功能(通過email、pager或其他用戶自定義的方法)。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245995.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:12
下一篇 2024-12-12 13:12

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 伺服器安裝Python的完整指南

    本文將為您提供伺服器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 伺服器

    STUN 伺服器是一個網路伺服器,可以協助網路設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 伺服器做詳…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 解決docker-compose 容器時間和伺服器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與伺服器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • 如何選擇MySQL伺服器文件許可權

    MySQL是一種流行的關係型資料庫管理系統。在安裝MySQL時,選擇正確的文件許可權是保證安全和性能的重要步驟。以下是一些指導您選擇正確許可權的建議。 一、許可權選擇 MySQL伺服器需…

    編程 2025-04-27
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • 如何將Python代碼部署到伺服器

    Python是一種高級編程語言,常被用於數據分析、機器學習、Web開發等不同領域的工作。但是,只有將Python代碼部署到伺服器上,才能讓其真正發揮作用。 一、選擇伺服器 要將Py…

    編程 2025-04-27
  • Python伺服器客戶端

    本文將從以下幾個方面對Python伺服器客戶端進行詳細闡述:socket編程、HTTP協議、Web框架、非同步IO。 一、socket編程 Python的socket模塊是為網路編程…

    編程 2025-04-27

發表回復

登錄後才能評論