Linux系統(tǒng)監(jiān)控與性能分析規(guī)程_第1頁
Linux系統(tǒng)監(jiān)控與性能分析規(guī)程_第2頁
Linux系統(tǒng)監(jiān)控與性能分析規(guī)程_第3頁
Linux系統(tǒng)監(jiān)控與性能分析規(guī)程_第4頁
Linux系統(tǒng)監(jiān)控與性能分析規(guī)程_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux系統(tǒng)監(jiān)控與性能分析規(guī)程一、概述

Linux系統(tǒng)監(jiān)控與性能分析是保障系統(tǒng)穩(wěn)定運行、優(yōu)化資源配置、快速定位問題的關鍵手段。本規(guī)程旨在提供一套系統(tǒng)化、規(guī)范化的監(jiān)控與分析流程,幫助管理員有效管理Linux系統(tǒng)性能,確保業(yè)務連續(xù)性。主要內容包括監(jiān)控工具的選擇與配置、性能指標的定義、異常情況處理及性能優(yōu)化建議。

二、監(jiān)控工具的選擇與配置

(一)常用監(jiān)控工具

1.系統(tǒng)負載與進程監(jiān)控:`top`、`htop`

2.內存與交換空間監(jiān)控:`free`、`vmstat`

3.磁盤I/O監(jiān)控:`iostat`、`iotop`

4.網絡流量監(jiān)控:`iftop`、`nload`

5.日志分析:`sysstat`、`logwatch`

6.遠程監(jiān)控:`Zabbix`、`Prometheus`(可選)

(二)配置步驟

1.安裝基礎工具:

-使用`yum`或`apt`安裝核心工具:

```bash

sudoyuminstallsysstatiotopnload

```

2.配置日志收集:

-編輯`/etc/sysconfig/sysstat`啟用每日收集:

```bash

LOGS=(/var/log/messages/var/log/cron)

```

3.設置網絡監(jiān)控:

-安裝`nload`并啟動服務:

```bash

sudoaptinstallnload

sudosystemctlstartnload

```

三、關鍵性能指標分析

(一)系統(tǒng)負載

1.指標定義:

-`loadaverage`(1分鐘、5分鐘、15分鐘平均值)

-正常范圍:低于CPU核心數(shù)的1.5倍(如4核系統(tǒng)低于6)

2.監(jiān)控方法:

-使用`uptime`或`top`查看:

```bash

uptime

```

(二)內存使用

1.關鍵指標:

-物理內存占用率(`free-m`)

-交換空間使用量(`free-h`)

2.異常處理:

-超過80%需分析進程(`psaux--sort=-%mem`)

(三)磁盤性能

1.監(jiān)控要點:

-IOPS(每秒讀寫次數(shù),目標≥100IOPS/GB)

-延遲(`iostat-x1`查看`await`)

2.優(yōu)化建議:

-調整`/etc/fstab`中的`noatime`選項減少I/O

(四)網絡流量

1.關鍵數(shù)據:

-入口/出口速率(`nload`或`iftop`)

-端口使用率(`netstat-tulnp`)

2.問題排查:

-高流量端口需確認是否為服務異常

四、性能分析與優(yōu)化

(一)分析流程

1.收集數(shù)據:

-運行`vmstat120`連續(xù)采樣20次

-截取`top`長時間輸出(`top-c30`)

2.識別瓶頸:

-通過`iostat`判斷磁盤瓶頸

-`pidstat`分析CPU占用進程

(二)常見優(yōu)化措施

1.資源調整:

-限制進程內存(`ulimit-m`)

-調整內核參數(shù)(`sysctlvm.dirty_ratio`)

2.服務降級:

-暫停非關鍵服務(如定時備份)

五、異常情況處理

(一)高負載響應

1.立即措施:

-查找僵尸進程(`psaux|grepZ`)

-暫停新任務(`nice-n19./script.sh`)

2.長期方案:

-升級硬件(如增加內存)

(二)磁盤空間不足

1.快速檢查:

-`df-h`定位滿掛載點

-`du-sh`查找大文件

2.清理步驟:

-刪除過期日志(`sudorm/var/log/.gz`)

-調整`logrotate`配置

六、監(jiān)控自動化與報告

(一)定時任務配置

1.使用`cron`:

```bash

0/usr/bin/collect_metrics.sh>/var/log/metrics.log

```

2.日志歸檔:

-編輯`/etc/logrotate.conf`添加監(jiān)控日志

(二)可視化工具集成(可選)

1.Grafana接入Prometheus:

-配置數(shù)據源:

```json

{

"url":"",

"type":"prometheus"

}

```

2.報警設置:

-閾值示例:CPU使用率>90%觸發(fā)告警

七、總結

Linux系統(tǒng)監(jiān)控需結合工具與業(yè)務場景靈活調整。通過規(guī)范化流程,可顯著提升運維效率,降低故障風險。建議定期(如每月)復盤監(jiān)控數(shù)據,持續(xù)優(yōu)化配置。

---

一、概述

Linux系統(tǒng)監(jiān)控與性能分析是保障系統(tǒng)穩(wěn)定運行、優(yōu)化資源配置、快速定位問題的關鍵手段。本規(guī)程旨在提供一套系統(tǒng)化、規(guī)范化的監(jiān)控與分析流程,幫助管理員有效管理Linux系統(tǒng)性能,確保業(yè)務連續(xù)性。主要內容包括監(jiān)控工具的選擇與配置、性能指標的定義、異常情況處理及性能優(yōu)化建議。本規(guī)程側重于通用Linux環(huán)境(如CentOS、Debian/Ubuntu),具體配置可能需根據發(fā)行版和硬件進行調整。

二、監(jiān)控工具的選擇與配置

(一)常用監(jiān)控工具

1.系統(tǒng)負載與進程監(jiān)控:

`top`:實時顯示系統(tǒng)進程狀態(tài),按CPU或內存排序。支持交互式操作(如按`P`按CPU排序,按`M`按內存排序)。

`htop`:`top`的增強版,圖形化顯示進程樹,支持顏色標記資源使用情況,提供更直觀的交互體驗。安裝方法通常為:`sudoaptinstallhtop`或`sudoyuminstallhtop`。

2.內存與交換空間監(jiān)控:

`free`:顯示系統(tǒng)內存(物理內存、交換空間)總量、已用、空閑、緩存和緩沖區(qū)狀態(tài)。常用參數(shù)`-h`(自動單位換算)和`-m`(顯示MB)。

`vmstat`:報告虛擬內存統(tǒng)計信息,包括CPU狀態(tài)、內存使用、磁盤I/O、交換空間活動等。每秒采樣一次,使用`vmstat110`表示采樣10次。

3.磁盤I/O監(jiān)控:

`iostat`:顯示系統(tǒng)輸入/輸出統(tǒng)計信息,包括設備負載、傳輸速率、等待時間。參數(shù)`-x`顯示詳細統(tǒng)計,`-d`僅顯示磁盤。

`iotop`:類似`top`但專注于磁盤I/O,按進程顯示讀寫速率。需安裝(`sudoaptinstalliotop`)。

4.網絡流量監(jiān)控:

`iftop`:實時顯示網絡接口流量,按連接或端口統(tǒng)計帶寬使用。使用方法:`sudoiftop-ieth0`(指定接口)。

`nload`:簡潔的圖形化網絡流量監(jiān)控工具,顯示實時和平均速率。安裝后可通過`nloadeth0`監(jiān)控指定接口。

5.日志分析:

`sysstat`:包含`iostat`、`vmstat`、`sar`(系統(tǒng)活動報告)等工具,支持歷史數(shù)據收集和報表生成。安裝后可通過`sar`命令分析歷史性能數(shù)據。

`logwatch`:自動化日志分析工具,定期生成系統(tǒng)及應用程序的摘要報告。配置文件通常位于`/etc/logwatch/conf/`。

6.遠程監(jiān)控(可選,需配合特定軟件棧):

`Zabbix`:功能強大的開源監(jiān)控平臺,支持主機自動發(fā)現(xiàn)、圖形化面板、告警觸發(fā)等。需獨立部署并配置監(jiān)控項。

`Prometheus`+`Grafana`:流行的監(jiān)控與可視化組合,Prometheus負責數(shù)據采集,Grafana負責可視化展示。適合微服務架構。

(二)配置步驟

1.安裝基礎工具:

使用包管理器安裝核心監(jiān)控工具。以Debian/Ubuntu為例:

```bash

sudoaptupdate

sudoaptinstallsysstatiotopnloadhtop

```

以CentOS/RHEL為例:

```bash

sudoyumupdate

sudoyuminstallsysstatiotopnloadhtop

```

2.配置日志收集(sysstat):

編輯`/etc/sysconfig/sysstat`文件,確保以下設置:

```bash

是否收集數(shù)據

SYSSTAT_DIR="/var/log/sysstat"

每日收集時間(24小時制)

SYSSTAT_START="0400"

每日保留多少天數(shù)據

SYSSTAT_PRESERVE="0"

收集哪些日志(根據實際需要調整)

LOGS=(/var/log/messages/var/log/cron/var/log/auth.log/var/log/syslog)

```

啟用并啟動服務:

```bash

sudosystemctlenablesysstat

sudosystemctlstartsysstat

開機自啟cron任務(如果未配置)

sudotouch/etc/cron.daily/sysstat

sudochmod+x/etc/cron.daily/sysstat

```

3.設置網絡監(jiān)控(nload):

安裝`nload`:

```bash

sudoaptinstallnloadDebian/Ubuntu

sudoyuminstallnloadCentOS/RHEL

```

啟動服務(可能無需啟動,直接運行即可,但可創(chuàng)建服務鏈接):

```bash

sudosystemctlenablenload

sudosystemctlstartnload

```

也可直接運行查看指定接口:

```bash

nloadeth0

```

4.配置`logrotate`(日志自動輪轉):

編輯或創(chuàng)建`/etc/logrotate.d/syslog`文件:

```bash

/var/log/messages/var/log/syslog{

daily

missingok

rotate7

compress

notifempty

create640rootadm

}

```

確保sysstat日志也被輪轉:通常`/var/log/syslog`已被包含,無需額外配置。

三、關鍵性能指標分析

(一)系統(tǒng)負載

1.指標定義:

`loadaverage`(1分鐘、5分鐘、15分鐘平均值):表示系統(tǒng)在過去1分鐘、5分鐘、15分鐘內平均有多少個進程在等待CPU。

計算方法:取值=可運行隊列中的進程數(shù)+平均運行隊列中的進程數(shù)。

正常范圍:通常認為低于CPU核心數(shù)的1倍為理想狀態(tài),不超過1.5倍為可接受。例如,4核系統(tǒng),1分鐘負載低于4,低于6為正常。

2.監(jiān)控方法:

使用`uptime`命令查看:

```bash

uptime

輸出示例:

13:15:01up45days,2:33,1user,loadaverage:0.05,0.10,0.15

```

使用`top`命令查看(按`L`切換顯示負載):

```bash

top

```

結合`w`命令查看更多信息(用戶、運行時間、負載等):

```bash

w

```

3.異常分析:

高負載:

-原因:進程數(shù)過多、CPU密集型任務、I/O等待、內存不足(觸發(fā)交換空間)。

-排查步驟:

1.使用`top`或`htop`查找CPU占用高的進程。

2.使用`psauxf`查看進程樹,判斷是否有僵尸進程。

3.使用`vmstat15`檢查內存使用和交換活動。

4.使用`iostat15`檢查磁盤I/O是否飽和。

低負載(接近0):可能表示CPU資源未被充分利用,可考慮增加任務負載或升級硬件。

(二)內存使用

1.關鍵指標:

物理內存占用率:通過`free-h`或`top`的內存部分查看。關注`used`/`total`比例。

緩存(Cache)與緩沖區(qū)(Buffer):這部分內存被內核使用,用于加速文件讀寫。`free`命令會顯示在`free`列中,不應計入可用內存。

交換空間使用率:通過`free-h`或`vmstat`的`swpd`列查看。

2.正常范圍:

物理內存占用率:建議保持在50%-75%以下,避免長時間接近100%。

交換空間使用:盡量避免使用交換空間,表示內存不足。若頻繁使用,需增加物理內存或優(yōu)化內存使用。

3.監(jiān)控方法:

常用命令:`free-h`,`top`,`vmstat110`(關注`bi`/`bo`和`free`列)。

使用`smem`命令查看更詳細的內存分類(RSS、VSZ、共享等):

```bash

smem-h

```

4.異常處理:

內存不足:

-快速釋放:

1.使用`htop`選擇進程按`Shift+R`殺死。

2.檢查是否有未清理的日志文件(`du-sh/var/log`)。

3.暫停非關鍵服務(`systemctlstop<service_name>`)。

-長期方案:

1.增加物理內存。

2.調整內核參數(shù)(如`vm.swappiness`)減少交換使用。

3.優(yōu)化應用程序內存占用(如數(shù)據庫連接池)。

緩存頻繁回收:若`vmstat`中`free`列長時間接近0且`b`(塊設備等待)較高,可能表示緩存壓力過大,可嘗試降低`vm.swappiness`(如`sysctlvm.swappiness=10`)。

(三)磁盤性能

1.監(jiān)控要點:

IOPS(Input/OutputOperationsPerSecond):每秒磁盤讀寫次數(shù)。可通過`iostat-x110`的`r/s`(讀次數(shù))和`w/s`(寫次數(shù))查看。

吞吐量(Throughput):磁盤數(shù)據傳輸速率(MB/s)??赏ㄟ^`iostat-x110`的`rrqm/s`(讀請求合并)、`wrqm/s`(寫請求合并)、`rb`(讀字節(jié)數(shù))和`wb`(寫字節(jié)數(shù))估算。

延遲(Latency):磁盤響應時間??赏ㄟ^`iostat-x110`的`await`(平均等待時間)評估。正常值應低于幾毫秒,過高表示磁盤瓶頸。

隊列深度(QueueDepth):等待磁盤處理的請求數(shù)??赏ㄟ^`iostat-x110`的`avgqu-sz`(平均隊列長度)評估。

2.正常范圍:

IOPS:SSD通?!?00-200IOPS/GB,HDD≥50-100IOPS/GB。具體取決于磁盤類型和負載。

延遲:SSD<5ms,HDD<10-15ms。

隊列深度:應與磁盤轉速相關(如7.2KHDD通常較低,15KHDD較高)。

3.監(jiān)控方法:

`iostat-x110`:最全面的磁盤性能工具。

`iotop-o`:僅顯示I/O消耗高的進程。

`vmstat110`:可通過`bi`(塊設備入站)、`bo`(出站)估算I/O總量。

`df-h`:檢查掛載點可用空間,間接反映寫滿風險。

4.優(yōu)化建議:

調整`/etc/fstab`:對日志文件、臨時文件系統(tǒng)添加`noatime`選項,減少不必要的磁盤訪問。

```bash

示例:/var/log掛載為ext4

/dev/sda1/var/logext4defaults,noatime12

```

使用RAID:對于高I/O需求,考慮RAID10(讀/寫性能高)或RAID5(空間效率高)。

SSD優(yōu)化:啟用TRIM(如`sudohdparm--trimfreespace/dev/sda`,需內核支持)。

調整I/O調度器:根據磁盤類型選擇合適的調度器(如SSD用`deadline`或`noop`,HDD用`cfq`)。

```bash

查看當前調度器

cat/sys/block/sda/queue/scheduler

臨時切換(重啟后失效)

echodeadline>/sys/block/sda/queue/scheduler

永久修改(需root,可能需要重啟服務或系統(tǒng))

echodeadline>/etc/default/grub

重新生成GRUB配置并重啟

sudogrub2-mkconfig-o/boot/grub2/grub.cfg

sudoreboot

```

(四)網絡流量

1.關鍵數(shù)據:

速率:入口(in)和出口(out)帶寬使用量(KB/s或MB/s)??赏ㄟ^`nloadeth0`或`iftop`查看。

連接數(shù):活躍網絡連接數(shù)??赏ㄟ^`netstat-tuln`或`ss-tuln`查看。

端口使用:特定端口(如80、443、22)的流量和連接??赏ㄟ^`netstat-an|grep:80`查找。

2.正常范圍:

帶寬使用率:根據業(yè)務需求設定閾值(如80%)??蓞⒖細v史數(shù)據或預估。

連接數(shù):無異常波動,過高可能表示掃描或攻擊。

3.監(jiān)控方法:

`nloadeth0`:實時圖形化顯示。

`iftop-ieth0-n-p`:顯示IP和端口流量,`-n`不解析主機名,`-p`顯示端口。

`netstat-tulnp`:列出監(jiān)聽端口及進程。

`tcpdump`:抓取網絡數(shù)據包(需謹慎使用,消耗資源)。

```bash

抓取80端口流量

sudotcpdump-ieth0port80-A-v

```

4.問題排查:

異常高流量:

1.使用`iftop`或`nload`定位高流量連接。

2.使用`netstat-antp|grep<IP>`或`ss-antp|grep<IP>`查找對應進程(`pid`)。

3.使用`top-p<pid>`確認進程狀態(tài)。

4.判斷是否為正常業(yè)務流量(如下載任務、備份)。

端口掃描:

1.使用`netstat`或`ss`檢查大量連接嘗試。

2.確認端口是否開放(防火墻檢查)。

3.若非預期連接,考慮防火墻攔截(如`iptables`或`firewalld`)。

四、性能分析與優(yōu)化

(一)分析流程

1.數(shù)據收集:

短期采樣:

-`top-c60`:連續(xù)60秒按CPU/內存排序的進程列表。

-`vmstat120`:連續(xù)20次采樣內存、CPU、I/O狀態(tài)。

-`iostat-x110`:連續(xù)10次采樣磁盤詳細狀態(tài)。

歷史數(shù)據:

-`sar`:sysstat的歷史數(shù)據工具。

```bash

查看過去1天的平均負載

sudosar-u124|less

保存過去一周的CPU使用到文件

sudosar-u117>cpu_usage_2023-10-27.log

```

-`journalctl`:查看系統(tǒng)日志中的性能相關記錄。

```bash

查看最近1小時內核日志中的CPU警告

sudojournalctl-k--since"1hourago"|grepCPU

```

2.瓶頸識別:

綜合分析:結合多個工具數(shù)據,定位瓶頸。

-高CPU負載+`top`顯示某個進程占用率高→CPU瓶頸。

-高I/O等待(`iostat``await`)+`iotop`顯示某個進程I/O高→I/O瓶頸。

-高網絡流量(`nload`)+`netstat`顯示大量連接→網絡瓶頸。

進程級分析:

-使用`pidstat`監(jiān)控特定進程資源使用(CPU、內存、I/O)。

```bash

監(jiān)控PID為1234的進程,每秒采樣1次,共10次

sudopidstat-p1234110

```

-使用`strace`(需謹慎,可能影響系統(tǒng))跟蹤進程系統(tǒng)調用。

```bash

跟蹤PID為2345的進程前10次系統(tǒng)調用

sudostrace-p2345-c-T-n10

```

3.根因定位:

-內存問題:結合`free`、`smem`、`ps`判斷是否由內存泄漏或配置不當引起。

-磁盤問題:檢查`iostat`的`r/s`和`w/s`是否飽和,結合`iotop`定位進程。

-網絡問題:確認是否為合法流量,檢查防火墻規(guī)則、路由。

(二)常見優(yōu)化措施

1.資源調整:

進程優(yōu)先級:

-使用`nice`和`renice`調整進程優(yōu)先級。

```bash

以最低優(yōu)先級(19)運行script.sh

sudonice-n19./script.sh

將PID為1234的進程優(yōu)先級調整為10

sudorenice10-p1234

```

-優(yōu)先級范圍:-20(最高)到19(最低),0為默認。

內存限制:

-使用`ulimit`設置進程資源軟硬限制。

```bash

設置最大文件描述符為10240

ulimit-n10240

設置最大內存使用量(單位MB)

ulimit-m2048

```

-使用`cgroups`(控制組)限制進程資源(需內核支持)。

```bash

創(chuàng)建cgroup

mkdir/sys/fs/cgroup/memory/mygroup

將PID為3456的進程加入

echo3456>/sys/fs/cgroup/memory/mygroup/tasks

限制內存使用量為1024MB

echo1024M>/sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes

```

內核參數(shù):

-調整`sysctl`參數(shù)優(yōu)化性能。

```bash

增加文件描述符限制

echo65536>/proc/sys/net/core/somaxconn

調整OOM調整策略(謹慎使用)

echo1>/proc/sys/vm/oom_kill_allocating_task

```

-修改后需重啟服務或系統(tǒng)使生效。

```bash

臨時生效

sudosysctl-wnet.core.somaxconn=65536

永久修改(需編輯/sysctl.conf或相關文件)

echo"net.core.somaxconn=65536"|sudotee-a/etc/sysctl.conf

sudosysctl-p

```

2.服務降級/擴容:

臨時降級:

-暫停非關鍵服務(如定時備份、日志分析)。

```bash

暫停mysqld服務

sudosystemctlstopmysqld

恢復服務

sudosystemctlstartmysqld

```

-減少并發(fā)請求(如Web服務限流)。

擴容方案:

-增加CPU核心數(shù)(硬件升級)。

-增加內存(硬件升級)。

-增加磁盤(硬件升級,考慮RAID)。

-增加網絡帶寬(硬件升級)。

五、異常情況處理

(一)高負載響應

1.即時措施:

識別高CPU進程:

1.使用`top-c`或`htop`按CPU排序,查找`PID`和`%CPU`。

2.記錄PID,使用`ps-p<PID>-ef`或`grep<PID>`查看詳細信息。

終止或降低優(yōu)先級:

1.若為僵尸進程:使用`kill-9<PID>`強制終止。

```bash

查找僵尸進程

psaux|grepZ

終止PID為6789的僵尸進程

sudokill-96789

```

2.若為異常進程:使用`kill-9<PID>`或`systemctlstop<service_name>`。

3.若為正常但占用高的進程:使用`nice`降低優(yōu)先級運行。

```bash

以nice值10運行backup.sh

sudonice-n10./backup.sh

```

檢查系統(tǒng)資源:

1.使用`free-h`檢查內存。若低,考慮重啟服務釋放內存。

2.使用`iostat`檢查磁盤。若高,暫停磁盤密集型任務。

3.使用`nload`檢查網絡。若高,檢查是否有異常流量。

2.長期方案:

升級硬件:若持續(xù)高負載,考慮增加CPU、內存。

優(yōu)化代碼/配置:

-檢查數(shù)據庫連接池配置是否合理。

-優(yōu)化循環(huán)或算法減少CPU消耗。

垂直/水平擴展:

-垂直擴展:升級單機硬件。

-水平擴展:增加更多服務器(需負載均衡)。

(二)磁盤空間不足

1.快速檢查:

使用`df-h`查看掛載點使用情況。

```bash

df-h

輸出示例:

FilesystemSizeUsedAvailUse%Mountedon

/dev/sda150G45G2G91%/

/dev/sdb1200G190G10G95%/data

```

使用`du-sh`在當前目錄查找大文件/目錄。

```bash

查找當前目錄下大于1G的文件或目錄

du-sh|grep'[0-9].G'

```

使用`find`命令查找特定類型大文件(如日志)。

```bash

查找過去7天內修改過的大小超過100M的.log文件

find/var/log-typef-name".log"-mtime-7-size+100M

```

2.清理步驟:

清理日志文件:

1.刪除過期日志(手動或自動)。

```bash

刪除/var/log下2023年以前的.log文件

find/var/log-typef-name".log"-mtime+90-delete

```

2.配置`logrotate`自動輪轉和清理。

```bash

編輯/var/log/syslog的輪轉配置

sudovim/etc/logrotate.d/syslog

添加壓縮、刪除舊文件等選項

/var/log/messages/var/log/syslog{

daily

rotate7

compress

delaycompress

missingok

notifempty

create640rootadm

}

```

釋放其他空間:

1.檢查臨時文件:`sudorm-rf/tmp/`(謹慎操作)。

2.檢查包緩存:`sudoyumcleanall`(CentOS/RHEL)或`sudoaptautoremove&&sudoaptautoclean`(Debian/Ubuntu)。

3.檢查大用戶家目錄:使用`du-sh/home/`。

擴容方案:

1.擴展文件系統(tǒng):

-使用`growpart`(如`sudogrowpart/dev/sda1`)擴展分區(qū)。

-使用`lvextend`和`resize2fs`擴展LVM邏輯卷。

```bash

擴展邏輯卷

sudolvextend/dev/vg/myvg/mylv

擴展文件系統(tǒng)

sudoresize2fs/dev/vg/myvg/mylv

```

2.添加新磁盤并掛載。

六、監(jiān)控自動化與報告

(一)定時任務配置

1.使用`cron`:

編輯當前用戶的crontab:

```bash

crontab-e

```

添加定時任務示例(每小時執(zhí)行一次監(jiān)控腳本并保存日志):

```bash

每小時0分執(zhí)行collect.sh,輸出到/var/log/monitor.log

0/path/to/collect.sh>/var/log/monitor.log2>&1

```

腳本`collect.sh`示例:

```bash

!/bin/bash

echo"---------------------$(date)---------------------">>/var/log/monitor.log

top-bn1>>/var/log/monitor.log添加1分鐘平均負載

free-m>>/var/log/monitor.log

df-h>>/var/log/monitor.log

```

確保腳本可執(zhí)行:`chmod+x/path/to/collect.sh`。

2.使用`systemd`定時器:

創(chuàng)建服務文件(`/etc/systemd/system/monitor.service`):

```ini

[Unit]

Description=SystemMonitoringService

[Service]

ExecStart=/path/to/collect.sh

[Timer]

OnCalendar=::00每小時0分觸發(fā)

[Install]

WantedBy=timers.target

```

啟用并啟動定時器:

```bash

sudosystemctlenablemonitor.timer

sudosystemctlstartmonitor.timer

檢查狀態(tài)

sudosystemctllist-timers

```

(二)可視化工具集成(可選)

1.Grafana+Prometheus:

Prometheus配置(`prometheus.yml`):

```yaml

scrape_configs:

-job_name:'system'

static_configs:

-targets:['localhost:9090']

-job_name:'sysstat'

static_configs:

-targets:['localhost:9100']

```

SysstatExporter配置(`/etc/prometheus/prometheus.yml`):

```yaml

scrape_configs:

-job_name:'sysstat'

scrape_interval:5m

static_configs:

-targets:['localhost:9100']

```

Grafana配置:

1.安裝Grafana:`sudoaptinstallgrafana`。

2.啟動服務:`sudosystemctlstartgrafana-server`。

3.訪問Web界面(默認http://localhost:3000)。

4.添加Prometheus數(shù)據源:

-選中"Adddatasource",選擇"Prometheus"。

-輸入Prometheus地址(`http://localhost:9090`)。

5.創(chuàng)建面板:

-選中"Createpanel"。

-選擇"Metrics"面板類型。

-輸入Prometheus查詢語句(如`load1`、`mem_free`)。

-添加圖表(折線圖、柱狀圖等)。

告警配置:

1.在Grafana面板中添加告警規(guī)則:

-選中面板,點擊"Addalert"。

-設置條件(如`load1>5`)。

-配置通知渠道(Email、Webhook等)。

2.PromQL示例:

```promql

load1{job="system"}>5

```

七、總結

Linux系統(tǒng)監(jiān)控與性能分析是一個持續(xù)優(yōu)化的過程。通過合理選擇監(jiān)控工具、定義關鍵指標、規(guī)范分析流程,并結合自動化手段,管理員能夠有效預防故障、提升系統(tǒng)穩(wěn)定性。本規(guī)程提供了基礎框架和具體操作步驟,實際應用中需結合具體業(yè)務場景和硬件環(huán)境進行調整。建議定期(如每月)復盤監(jiān)控數(shù)據和優(yōu)化效果,持續(xù)改進監(jiān)控策略。隨著系統(tǒng)規(guī)模擴大,可考慮引入更專業(yè)的監(jiān)控平臺(如Zabbix、Prometheus),實現(xiàn)更全面的自動化監(jiān)控與管理。

一、概述

Linux系統(tǒng)監(jiān)控與性能分析是保障系統(tǒng)穩(wěn)定運行、優(yōu)化資源配置、快速定位問題的關鍵手段。本規(guī)程旨在提供一套系統(tǒng)化、規(guī)范化的監(jiān)控與分析流程,幫助管理員有效管理Linux系統(tǒng)性能,確保業(yè)務連續(xù)性。主要內容包括監(jiān)控工具的選擇與配置、性能指標的定義、異常情況處理及性能優(yōu)化建議。

二、監(jiān)控工具的選擇與配置

(一)常用監(jiān)控工具

1.系統(tǒng)負載與進程監(jiān)控:`top`、`htop`

2.內存與交換空間監(jiān)控:`free`、`vmstat`

3.磁盤I/O監(jiān)控:`iostat`、`iotop`

4.網絡流量監(jiān)控:`iftop`、`nload`

5.日志分析:`sysstat`、`logwatch`

6.遠程監(jiān)控:`Zabbix`、`Prometheus`(可選)

(二)配置步驟

1.安裝基礎工具:

-使用`yum`或`apt`安裝核心工具:

```bash

sudoyuminstallsysstatiotopnload

```

2.配置日志收集:

-編輯`/etc/sysconfig/sysstat`啟用每日收集:

```bash

LOGS=(/var/log/messages/var/log/cron)

```

3.設置網絡監(jiān)控:

-安裝`nload`并啟動服務:

```bash

sudoaptinstallnload

sudosystemctlstartnload

```

三、關鍵性能指標分析

(一)系統(tǒng)負載

1.指標定義:

-`loadaverage`(1分鐘、5分鐘、15分鐘平均值)

-正常范圍:低于CPU核心數(shù)的1.5倍(如4核系統(tǒng)低于6)

2.監(jiān)控方法:

-使用`uptime`或`top`查看:

```bash

uptime

```

(二)內存使用

1.關鍵指標:

-物理內存占用率(`free-m`)

-交換空間使用量(`free-h`)

2.異常處理:

-超過80%需分析進程(`psaux--sort=-%mem`)

(三)磁盤性能

1.監(jiān)控要點:

-IOPS(每秒讀寫次數(shù),目標≥100IOPS/GB)

-延遲(`iostat-x1`查看`await`)

2.優(yōu)化建議:

-調整`/etc/fstab`中的`noatime`選項減少I/O

(四)網絡流量

1.關鍵數(shù)據:

-入口/出口速率(`nload`或`iftop`)

-端口使用率(`netstat-tulnp`)

2.問題排查:

-高流量端口需確認是否為服務異常

四、性能分析與優(yōu)化

(一)分析流程

1.收集數(shù)據:

-運行`vmstat120`連續(xù)采樣20次

-截取`top`長時間輸出(`top-c30`)

2.識別瓶頸:

-通過`iostat`判斷磁盤瓶頸

-`pidstat`分析CPU占用進程

(二)常見優(yōu)化措施

1.資源調整:

-限制進程內存(`ulimit-m`)

-調整內核參數(shù)(`sysctlvm.dirty_ratio`)

2.服務降級:

-暫停非關鍵服務(如定時備份)

五、異常情況處理

(一)高負載響應

1.立即措施:

-查找僵尸進程(`psaux|grepZ`)

-暫停新任務(`nice-n19./script.sh`)

2.長期方案:

-升級硬件(如增加內存)

(二)磁盤空間不足

1.快速檢查:

-`df-h`定位滿掛載點

-`du-sh`查找大文件

2.清理步驟:

-刪除過期日志(`sudorm/var/log/.gz`)

-調整`logrotate`配置

六、監(jiān)控自動化與報告

(一)定時任務配置

1.使用`cron`:

```bash

0/usr/bin/collect_metrics.sh>/var/log/metrics.log

```

2.日志歸檔:

-編輯`/etc/logrotate.conf`添加監(jiān)控日志

(二)可視化工具集成(可選)

1.Grafana接入Prometheus:

-配置數(shù)據源:

```json

{

"url":"",

"type":"prometheus"

}

```

2.報警設置:

-閾值示例:CPU使用率>90%觸發(fā)告警

七、總結

Linux系統(tǒng)監(jiān)控需結合工具與業(yè)務場景靈活調整。通過規(guī)范化流程,可顯著提升運維效率,降低故障風險。建議定期(如每月)復盤監(jiān)控數(shù)據,持續(xù)優(yōu)化配置。

---

一、概述

Linux系統(tǒng)監(jiān)控與性能分析是保障系統(tǒng)穩(wěn)定運行、優(yōu)化資源配置、快速定位問題的關鍵手段。本規(guī)程旨在提供一套系統(tǒng)化、規(guī)范化的監(jiān)控與分析流程,幫助管理員有效管理Linux系統(tǒng)性能,確保業(yè)務連續(xù)性。主要內容包括監(jiān)控工具的選擇與配置、性能指標的定義、異常情況處理及性能優(yōu)化建議。本規(guī)程側重于通用Linux環(huán)境(如CentOS、Debian/Ubuntu),具體配置可能需根據發(fā)行版和硬件進行調整。

二、監(jiān)控工具的選擇與配置

(一)常用監(jiān)控工具

1.系統(tǒng)負載與進程監(jiān)控:

`top`:實時顯示系統(tǒng)進程狀態(tài),按CPU或內存排序。支持交互式操作(如按`P`按CPU排序,按`M`按內存排序)。

`htop`:`top`的增強版,圖形化顯示進程樹,支持顏色標記資源使用情況,提供更直觀的交互體驗。安裝方法通常為:`sudoaptinstallhtop`或`sudoyuminstallhtop`。

2.內存與交換空間監(jiān)控:

`free`:顯示系統(tǒng)內存(物理內存、交換空間)總量、已用、空閑、緩存和緩沖區(qū)狀態(tài)。常用參數(shù)`-h`(自動單位換算)和`-m`(顯示MB)。

`vmstat`:報告虛擬內存統(tǒng)計信息,包括CPU狀態(tài)、內存使用、磁盤I/O、交換空間活動等。每秒采樣一次,使用`vmstat110`表示采樣10次。

3.磁盤I/O監(jiān)控:

`iostat`:顯示系統(tǒng)輸入/輸出統(tǒng)計信息,包括設備負載、傳輸速率、等待時間。參數(shù)`-x`顯示詳細統(tǒng)計,`-d`僅顯示磁盤。

`iotop`:類似`top`但專注于磁盤I/O,按進程顯示讀寫速率。需安裝(`sudoaptinstalliotop`)。

4.網絡流量監(jiān)控:

`iftop`:實時顯示網絡接口流量,按連接或端口統(tǒng)計帶寬使用。使用方法:`sudoiftop-ieth0`(指定接口)。

`nload`:簡潔的圖形化網絡流量監(jiān)控工具,顯示實時和平均速率。安裝后可通過`nloadeth0`監(jiān)控指定接口。

5.日志分析:

`sysstat`:包含`iostat`、`vmstat`、`sar`(系統(tǒng)活動報告)等工具,支持歷史數(shù)據收集和報表生成。安裝后可通過`sar`命令分析歷史性能數(shù)據。

`logwatch`:自動化日志分析工具,定期生成系統(tǒng)及應用程序的摘要報告。配置文件通常位于`/etc/logwatch/conf/`。

6.遠程監(jiān)控(可選,需配合特定軟件棧):

`Zabbix`:功能強大的開源監(jiān)控平臺,支持主機自動發(fā)現(xiàn)、圖形化面板、告警觸發(fā)等。需獨立部署并配置監(jiān)控項。

`Prometheus`+`Grafana`:流行的監(jiān)控與可視化組合,Prometheus負責數(shù)據采集,Grafana負責可視化展示。適合微服務架構。

(二)配置步驟

1.安裝基礎工具:

使用包管理器安裝核心監(jiān)控工具。以Debian/Ubuntu為例:

```bash

sudoaptupdate

sudoaptinstallsysstatiotopnloadhtop

```

以CentOS/RHEL為例:

```bash

sudoyumupdate

sudoyuminstallsysstatiotopnloadhtop

```

2.配置日志收集(sysstat):

編輯`/etc/sysconfig/sysstat`文件,確保以下設置:

```bash

是否收集數(shù)據

SYSSTAT_DIR="/var/log/sysstat"

每日收集時間(24小時制)

SYSSTAT_START="0400"

每日保留多少天數(shù)據

SYSSTAT_PRESERVE="0"

收集哪些日志(根據實際需要調整)

LOGS=(/var/log/messages/var/log/cron/var/log/auth.log/var/log/syslog)

```

啟用并啟動服務:

```bash

sudosystemctlenablesysstat

sudosystemctlstartsysstat

開機自啟cron任務(如果未配置)

sudotouch/etc/cron.daily/sysstat

sudochmod+x/etc/cron.daily/sysstat

```

3.設置網絡監(jiān)控(nload):

安裝`nload`:

```bash

sudoaptinstallnloadDebian/Ubuntu

sudoyuminstallnloadCentOS/RHEL

```

啟動服務(可能無需啟動,直接運行即可,但可創(chuàng)建服務鏈接):

```bash

sudosystemctlenablenload

sudosystemctlstartnload

```

也可直接運行查看指定接口:

```bash

nloadeth0

```

4.配置`logrotate`(日志自動輪轉):

編輯或創(chuàng)建`/etc/logrotate.d/syslog`文件:

```bash

/var/log/messages/var/log/syslog{

daily

missingok

rotate7

compress

notifempty

create640rootadm

}

```

確保sysstat日志也被輪轉:通常`/var/log/syslog`已被包含,無需額外配置。

三、關鍵性能指標分析

(一)系統(tǒng)負載

1.指標定義:

`loadaverage`(1分鐘、5分鐘、15分鐘平均值):表示系統(tǒng)在過去1分鐘、5分鐘、15分鐘內平均有多少個進程在等待CPU。

計算方法:取值=可運行隊列中的進程數(shù)+平均運行隊列中的進程數(shù)。

正常范圍:通常認為低于CPU核心數(shù)的1倍為理想狀態(tài),不超過1.5倍為可接受。例如,4核系統(tǒng),1分鐘負載低于4,低于6為正常。

2.監(jiān)控方法:

使用`uptime`命令查看:

```bash

uptime

輸出示例:

13:15:01up45days,2:33,1user,loadaverage:0.05,0.10,0.15

```

使用`top`命令查看(按`L`切換顯示負載):

```bash

top

```

結合`w`命令查看更多信息(用戶、運行時間、負載等):

```bash

w

```

3.異常分析:

高負載:

-原因:進程數(shù)過多、CPU密集型任務、I/O等待、內存不足(觸發(fā)交換空間)。

-排查步驟:

1.使用`top`或`htop`查找CPU占用高的進程。

2.使用`psauxf`查看進程樹,判斷是否有僵尸進程。

3.使用`vmstat15`檢查內存使用和交換活動。

4.使用`iostat15`檢查磁盤I/O是否飽和。

低負載(接近0):可能表示CPU資源未被充分利用,可考慮增加任務負載或升級硬件。

(二)內存使用

1.關鍵指標:

物理內存占用率:通過`free-h`或`top`的內存部分查看。關注`used`/`total`比例。

緩存(Cache)與緩沖區(qū)(Buffer):這部分內存被內核使用,用于加速文件讀寫。`free`命令會顯示在`free`列中,不應計入可用內存。

交換空間使用率:通過`free-h`或`vmstat`的`swpd`列查看。

2.正常范圍:

物理內存占用率:建議保持在50%-75%以下,避免長時間接近100%。

交換空間使用:盡量避免使用交換空間,表示內存不足。若頻繁使用,需增加物理內存或優(yōu)化內存使用。

3.監(jiān)控方法:

常用命令:`free-h`,`top`,`vmstat110`(關注`bi`/`bo`和`free`列)。

使用`smem`命令查看更詳細的內存分類(RSS、VSZ、共享等):

```bash

smem-h

```

4.異常處理:

內存不足:

-快速釋放:

1.使用`htop`選擇進程按`Shift+R`殺死。

2.檢查是否有未清理的日志文件(`du-sh/var/log`)。

3.暫停非關鍵服務(`systemctlstop<service_name>`)。

-長期方案:

1.增加物理內存。

2.調整內核參數(shù)(如`vm.swappiness`)減少交換使用。

3.優(yōu)化應用程序內存占用(如數(shù)據庫連接池)。

緩存頻繁回收:若`vmstat`中`free`列長時間接近0且`b`(塊設備等待)較高,可能表示緩存壓力過大,可嘗試降低`vm.swappiness`(如`sysctlvm.swappiness=10`)。

(三)磁盤性能

1.監(jiān)控要點:

IOPS(Input/OutputOperationsPerSecond):每秒磁盤讀寫次數(shù)??赏ㄟ^`iostat-x110`的`r/s`(讀次數(shù))和`w/s`(寫次數(shù))查看。

吞吐量(Throughput):磁盤數(shù)據傳輸速率(MB/s)。可通過`iostat-x110`的`rrqm/s`(讀請求合并)、`wrqm/s`(寫請求合并)、`rb`(讀字節(jié)數(shù))和`wb`(寫字節(jié)數(shù))估算。

延遲(Latency):磁盤響應時間??赏ㄟ^`iostat-x110`的`await`(平均等待時間)評估。正常值應低于幾毫秒,過高表示磁盤瓶頸。

隊列深度(QueueDepth):等待磁盤處理的請求數(shù)??赏ㄟ^`iostat-x110`的`avgqu-sz`(平均隊列長度)評估。

2.正常范圍:

IOPS:SSD通?!?00-200IOPS/GB,HDD≥50-100IOPS/GB。具體取決于磁盤類型和負載。

延遲:SSD<5ms,HDD<10-15ms。

隊列深度:應與磁盤轉速相關(如7.2KHDD通常較低,15KHDD較高)。

3.監(jiān)控方法:

`iostat-x110`:最全面的磁盤性能工具。

`iotop-o`:僅顯示I/O消耗高的進程。

`vmstat110`:可通過`bi`(塊設備入站)、`bo`(出站)估算I/O總量。

`df-h`:檢查掛載點可用空間,間接反映寫滿風險。

4.優(yōu)化建議:

調整`/etc/fstab`:對日志文件、臨時文件系統(tǒng)添加`noatime`選項,減少不必要的磁盤訪問。

```bash

示例:/var/log掛載為ext4

/dev/sda1/var/logext4defaults,noatime12

```

使用RAID:對于高I/O需求,考慮RAID10(讀/寫性能高)或RAID5(空間效率高)。

SSD優(yōu)化:啟用TRIM(如`sudohdparm--trimfreespace/dev/sda`,需內核支持)。

調整I/O調度器:根據磁盤類型選擇合適的調度器(如SSD用`deadline`或`noop`,HDD用`cfq`)。

```bash

查看當前調度器

cat/sys/block/sda/queue/scheduler

臨時切換(重啟后失效)

echodeadline>/sys/block/sda/queue/scheduler

永久修改(需root,可能需要重啟服務或系統(tǒng))

echodeadline>/etc/default/grub

重新生成GRUB配置并重啟

sudogrub2-mkconfig-o/boot/grub2/grub.cfg

sudoreboot

```

(四)網絡流量

1.關鍵數(shù)據:

速率:入口(in)和出口(out)帶寬使用量(KB/s或MB/s)??赏ㄟ^`nloadeth0`或`iftop`查看。

連接數(shù):活躍網絡連接數(shù)。可通過`netstat-tuln`或`ss-tuln`查看。

端口使用:特定端口(如80、443、22)的流量和連接。可通過`netstat-an|grep:80`查找。

2.正常范圍:

帶寬使用率:根據業(yè)務需求設定閾值(如80%)??蓞⒖細v史數(shù)據或預估。

連接數(shù):無異常波動,過高可能表示掃描或攻擊。

3.監(jiān)控方法:

`nloadeth0`:實時圖形化顯示。

`iftop-ieth0-n-p`:顯示IP和端口流量,`-n`不解析主機名,`-p`顯示端口。

`netstat-tulnp`:列出監(jiān)聽端口及進程。

`tcpdump`:抓取網絡數(shù)據包(需謹慎使用,消耗資源)。

```bash

抓取80端口流量

sudotcpdump-ieth0port80-A-v

```

4.問題排查:

異常高流量:

1.使用`iftop`或`nload`定位高流量連接。

2.使用`netstat-antp|grep<IP>`或`ss-antp|grep<IP>`查找對應進程(`pid`)。

3.使用`top-p<pid>`確認進程狀態(tài)。

4.判斷是否為正常業(yè)務流量(如下載任務、備份)。

端口掃描:

1.使用`netstat`或`ss`檢查大量連接嘗試。

2.確認端口是否開放(防火墻檢查)。

3.若非預期連接,考慮防火墻攔截(如`iptables`或`firewalld`)。

四、性能分析與優(yōu)化

(一)分析流程

1.數(shù)據收集:

短期采樣:

-`top-c60`:連續(xù)60秒按CPU/內存排序的進程列表。

-`vmstat120`:連續(xù)20次采樣內存、CPU、I/O狀態(tài)。

-`iostat-x110`:連續(xù)10次采樣磁盤詳細狀態(tài)。

歷史數(shù)據:

-`sar`:sysstat的歷史數(shù)據工具。

```bash

查看過去1天的平均負載

sudosar-u124|less

保存過去一周的CPU使用到文件

sudosar-u117>cpu_usage_2023-10-27.log

```

-`journalctl`:查看系統(tǒng)日志中的性能相關記錄。

```bash

查看最近1小時內核日志中的CPU警告

sudojournalctl-k--since"1hourago"|grepCPU

```

2.瓶頸識別:

綜合分析:結合多個工具數(shù)據,定位瓶頸。

-高CPU負載+`top`顯示某個進程占用率高→CPU瓶頸。

-高I/O等待(`iostat``await`)+`iotop`顯示某個進程I/O高→I/O瓶頸。

-高網絡流量(`nload`)+`netstat`顯示大量連接→網絡瓶頸。

進程級分析:

-使用`pidstat`監(jiān)控特定進程資源使用(CPU、內存、I/O)。

```bash

監(jiān)控PID為1234的進程,每秒采樣1次,共10次

sudopidstat-p1234110

```

-使用`strace`(需謹慎,可能影響系統(tǒng))跟蹤進程系統(tǒng)調用。

```bash

跟蹤PID為2345的進程前10次系統(tǒng)調用

sudostrace-p2345-c-T-n10

```

3.根因定位:

-內存問題:結合`free`、`smem`、`ps`判斷是否由內存泄漏或配置不當引起。

-磁盤問題:檢查`iostat`的`r/s`和`w/s`是否飽和,結合`iotop`定位進程。

-網絡問題:確認是否為合法流量,檢查防火墻規(guī)則、路由。

(二)常見優(yōu)化措施

1.資源調整:

進程優(yōu)先級:

-使用`nice`和`renice`調整進程優(yōu)先級。

```bash

以最低優(yōu)先級(19)運行script.sh

sudonice-n19./script.sh

將PID為1234的進程優(yōu)先級調整為10

sudorenice10-p1234

```

-優(yōu)先級范圍:-20(最高)到19(最低),0為默認。

內存限制:

-使用`ulimit`設置進程資源軟硬限制。

```bash

設置最大文件描述符為10240

ulimit-n10240

設置最大內存使用量(單位MB)

ulimit-m2048

```

-使用`cgroups`(控制組)限制進程資源(需內核支持)。

```bash

創(chuàng)建cgroup

mkdir/sys/fs/cgroup/memory/mygroup

將PID為3456的進程加入

echo3456>/sys/fs/cgroup/memory/mygroup/tasks

限制內存使用量為1024MB

echo1024M>/sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes

```

內核參數(shù):

-調整`sysctl`參數(shù)優(yōu)化性能。

```bash

增加文件描述符限制

echo65536>/proc/sys/net/core/somaxconn

調整OOM調整策略(謹慎使用)

echo1>/proc/sys/vm/oom_kill_allocating_task

```

-修改后需重啟服務或系統(tǒng)使生效。

```bash

臨時生效

sudosysctl-wnet.core.somaxconn=65536

永久修改(需編輯/sysctl.conf或相關文件)

echo"net.core.somaxconn=65536"|sudotee-a/etc/sysctl.conf

sudosysctl-p

```

2.服務降級/擴容:

臨時降級:

-暫停非關鍵服務(如定時備份、日志分析)。

```bash

暫停mysqld服務

sudosystemctlstopmysqld

恢復服務

sudosystemctlstartmysqld

```

-減少并發(fā)請求(如Web服務限流)。

擴容方案:

-增加CPU核心數(shù)(硬件升級)。

-增加內存(硬件升級)。

-增加磁盤(硬件升級,考慮RAID)。

-增加網絡帶寬(硬件升級)。

五、異常情況處理

(一)高負載響應

1.即時措施:

識別高CPU進程:

1.使用`top-c`或`htop`按CPU排序,查找`PID`和`%CPU`。

2.記錄PID,使用`ps-p<PID>-ef`或`grep<PID>`查看詳細信息。

終止或降低優(yōu)先級:

1.若為僵尸進程:使用`kill-9<PID>`強制終止。

```bash

查找僵尸進程

psaux|grepZ

終止PID為6789的僵尸進程

sudokill-96789

```

2.若為異常進程:使用`kill-9<PID>`或`systemctlstop<service_name>`。

3.若為正常但占用高的進程:使用`nice`降低優(yōu)先級運行。

```bash

以nice值10運行backup.sh

sudonice-n10./backup.sh

```

檢查系統(tǒng)資源:

1.使用`free-h`檢查內存。若低,考慮重啟服務釋放內存。

2.使用`iostat`檢查磁盤。若高,暫停磁盤密集型任務。

3.使用`nload`檢查網絡。若高,檢查是否有異常流量。

2.長期方案:

升級硬件:若持續(xù)高負載,考慮增加CPU、內存。

優(yōu)化代碼/配置:

-檢查數(shù)據庫連接池配置是否合理。

-優(yōu)化循環(huán)或算法減少CPU消耗。

垂直/水平擴展:

-垂直擴展:升級單機硬件。

-水平擴展:增加更多服務器(需負載均衡)。

(二)磁盤空間不足

1.快速檢查:

使用`df-h`查看掛載點使用情況。

```bash

df-h

輸出示例:

FilesystemSizeUsedAvailUse%Mountedon

/dev/sda150G45G2G91%/

/dev/sdb1200G190G10G95%/data

```

使用`du-sh`在當前目錄查找大文件/目錄。

```bash

查找當前目錄下大于1G的文件或目錄

du-sh|grep'[0-9].G'

```

使用`find`命令查找特定類型大文件(如日志)。

```bash

查找過去7天內修改過的大小超過100M的.log文件

find/var/log-typef-name".log"-mtime-7-size+100M

```

2.清理步驟:

清理日志文件:

1.刪除過期日志(手動或自動)。

```bash

刪除/var/log下2023年以前的.log文件

find/var/log-typef-name".log"-mtime+90-delete

```

2.配置`logrotate`自動輪轉和清理。

```bash

編輯/var/log/syslog的輪轉配置

sudovim/etc/logrotate.d/syslog

添加壓縮、刪除舊文件等選項

/var/log/messages/var/log/syslog{

daily

rotate7

compress

delaycompress

missingok

notifempty

create640rootadm

}

```

釋放其他空間:

1.檢查臨時文件:`sudorm-rf/tmp/`(謹慎操作)。

2.檢查包緩存:`sudoyumcleanall`(CentOS/RHEL)或`sudoaptautoremove&&sudoaptautoclean`(Debian/Ubuntu)。

3.檢查大用戶家目錄:使用`du-sh/home/`。

擴容方案:

1.擴展文件系統(tǒng):

-使用`growpart`(如`sudogrowpart/dev/sda1`)擴展分區(qū)。

-使用`lvextend`和`resize2fs`擴展LVM邏輯卷。

```bash

擴展邏輯卷

sudolvextend/dev/vg/myvg/mylv

擴展文件系統(tǒng)

sudoresize2fs/dev/vg/myvg/mylv

```

2.添加新磁盤并掛載。

六、監(jiān)控自動化與報告

(一)定時任務配置

1.使用`cron`:

編輯當前用戶的crontab:

```bash

crontab-e

```

添加定時任務示例(每小時執(zhí)行一次監(jiān)控腳本并保存日志):

```bash

每小時0分執(zhí)行collect.sh,輸出到/var/log/monitor.log

0/path/to/collect.sh>/var/log/monitor.log2>&1

```

腳本`collect.sh`示例:

```bash

!/bin/bash

echo"---------------------$(date)---------------------">>/var/log/monitor.log

top-bn1>>/var/log/monitor.log添加1分鐘平均負載

free-m>>/var/log/monitor.log

df-h>>/var/log/monitor.log

```

確保腳本可執(zhí)行:`chmod+x/path/to/collect.sh`。

2.使用`systemd`定時器:

創(chuàng)建服務文件(`/etc/systemd/system/monitor.service`):

```ini

[Unit]

Description=SystemMonitoringService

[Service]

ExecStart=/path/to/collect.sh

[Timer]

OnCalendar=::00每小時0分觸發(fā)

[Install]

WantedBy=timers.target

```

啟用并啟動定時器:

```bash

sudosystemctlenablemonitor.timer

sudosystemctlstartmonitor.timer

檢查狀態(tài)

sudosystemctllist-timers

```

(二)可視化工具集成(可選)

1.Grafana+Prometheus:

Prometheus配置(`prometheus.yml`):

```yaml

scrape_configs:

-job_name:'system'

static_configs:

-targets:['localhost:9090']

-job_name:'sysstat'

static_configs:

-targets:['localhost:9100']

```

SysstatExporter配置(`/etc/prometheus/prometheus.yml`):

```yaml

scrape_configs:

-job_name:'sysstat'

scrape_interval:5m

static_configs:

-targets:['localhost:9100']

```

Grafana配置:

1.安裝Grafana:`sudoaptinstallgrafana`。

2.啟動服務:`sudosystemctlstartgrafana-server`。

3.訪問Web界面(默認http://localhost:3000)。

4.添加Prometheus數(shù)據源:

-選中"Adddatasource",選擇"Prometheus"。

-輸入Prometheus地址(`http://localhost:9090`)。

5.創(chuàng)建面板:

-選中"Createpanel"。

-選擇"Metrics"面板類型。

-輸入Prometheus查詢語句(如`load1`、`mem_free`)。

-添加圖表(折線圖、柱狀圖等)。

告警配置:

1.在Grafana面板中添加告警規(guī)則:

-選中面板,點擊"Addalert"。

-設置條件(如`load1>5`)。

-配置通知渠道(Email、Webhook等)。

2.PromQL示例:

```promql

load1{job="system"}>5

```

七、總結

Linux系統(tǒng)監(jiān)控與性能分析是一個持續(xù)優(yōu)化的過程。通過合理選擇監(jiān)控工具、定義關鍵指標、規(guī)范分析流程,并結合自動化手段,管理員能夠有效預防故障、提升系統(tǒng)穩(wěn)定性。本規(guī)程提供了基礎框架和具體操作步驟,實際應用中需結合具體業(yè)務場景和硬件環(huán)境進行調整。建議定期(如每月)復盤監(jiān)控數(shù)據和優(yōu)化效果,持續(xù)改進監(jiān)控策略。隨著系統(tǒng)規(guī)模擴大,可考慮引入更專業(yè)的監(jiān)控平臺(如Zabbix、Prometheus),實現(xiàn)更全面的自動化監(jiān)控與管理。

一、概述

Linux系統(tǒng)監(jiān)控與性能分析是保障系統(tǒng)穩(wěn)定運行、優(yōu)化資源配置、快速定位問題的關鍵手段。本規(guī)程旨在提供一套系統(tǒng)化、規(guī)范化的監(jiān)控與分析流程,幫助管理員有效管理Linux系統(tǒng)性能,確保業(yè)務連續(xù)性。主要內容包括監(jiān)控工具的選擇與配置、性能指標的定義、異常情況處理及性能優(yōu)化建議。

二、監(jiān)控工具的選擇與配置

(一)常用監(jiān)控工具

1.系統(tǒng)負載與進程監(jiān)控:`top`、`htop`

2.內存與交換空間監(jiān)控:`free`、`vmstat`

3.磁盤I/O監(jiān)控:`iostat`、`iotop`

4.網絡流量監(jiān)控:`iftop`、`nload`

5.日志分析:`sysstat`、`logwatch`

6.遠程監(jiān)控:`Zabbix`、`Prometheus`(可選)

(二)配置步驟

1.安裝基礎工具:

-使用`yum`或`apt`安裝核心工具:

```bash

sudoyuminstallsysstatiotopnload

```

2.配置日志收集:

-編輯`/etc/sysconfig/sysstat`啟用每日收集:

```bash

LOGS=(/var/log/messages/var/log/cron)

``

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論