1. 程式人生 > >監控體系(二)

監控體系(二)

隊列 blank and ins change 52.0 -s 3.0 ibm服務器

監控概述

監控對象:
1.監控對象的理解:CPU 是怎麽工作的。原理
2.監控對象的指標:CPU使用率 CPU負載 CPU個數 上下文切換
3.確定性能基準線:怎麽樣才算故障?CPU負載多少才算高

監控範圍:
1.硬件監控 服務器的硬件故障
2.操作系統監控 CPU 內存 IO 進程
3.應用服務監控
4.業務監控


硬件監控

服務器:

遠程控制卡:DELL服務器:iDRAC
HP服務器:ILO
IBM服務器:IMM

方式:Linux就可以使用IPMI BMC控制器

工具:ipmitool


1.硬件要支持
2.操作系統 Linux IPMI
3.管理工具 ipmitool

安裝:yum install -y OpenIPMI ipmitool

啟動:systemctl start ipmi

幫助:ipmitool help

使用IPMI有兩種方式 1 本地調用 2 遠程調用 (IP地址 用戶名和密碼)

ipmi配置網絡,有兩種方式:
1. ipmi over lan(通過網卡)
2. 獨立(通過插入網線控制)

硬件監控方式: 1.使用IPMI 2.機房巡檢

snmp安裝: yum install -y net-snmp net-snmp-utils

snmp配置:

?
1 2 3 cd /etc/snmp/ mv snmpd.conf snmpd.conf.bak vim snmpd.conf

技術分享圖片

snmp啟動: systemctl start snmpd

snmp默認udp啟動端口:netstat -nulp

技術分享圖片

snmp默認tcp啟動端口:netstat -ntlp

技術分享圖片

技術分享圖片 技術分享圖片

snmp參考文檔:http://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html

?
1 snmpget -v2c -c shhnwangjian 192.168.137.11 1.3.6.1.2.1.1.3.0

技術分享圖片

1.3.6.1.2.1.1.3.0為OID

?
1 snmpget -v2c -c shhnwangjian 192.168.137.11 1.3.6.1.4.1.2021.10.1.3.1

這條命令表示獲取一分鐘系統平均負載

技術分享圖片

?
1 snmpwalk -v2c -c shhnwangjian 192.168.137.11 1.3.6.1.4.1.2021.10.1.3

這條命令表示獲取一分鐘、5分鐘、15分鐘的系統平均負載,等同於uptime

技術分享圖片

SNMP常用OID

+ View Code?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1 5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2 15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3 CPU percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0 raw user cpu time: .1.3.6.1.4.1.2021.11.50.0 percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0 raw system cpu time: .1.3.6.1.4.1.2021.11.52.0 percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0 raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0 raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0 Memory Statistics Total Swap Size: .1.3.6.1.4.1.2021.4.3.0 Available Swap Space: .1.3.6.1.4.1.2021.4.4.0 Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0 Total RAM used: .1.3.6.1.4.1.2021.4.6.0 Total RAM Free: .1.3.6.1.4.1.2021.4.11.0 Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0 Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0 Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0 Disk Statistics The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition): disk / 100000 (or) includeAllDisks 10% for all partitions and disks The OIDs are as follows Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1 Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1 Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1 Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1 Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1 Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1 Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1 System Uptime: .1.3.6.1.2.1.1.3.0 Examples These Commands you need to run on the SNMP server Get available disk space for / on the target host #snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.9.1.7.1 this will return available disk space for the first entry in the ‘disk’ section of snmpd.conf; replace 1 with n for the nth entry Get the 1-minute system load on the target host #snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.1 Get the 5-minute system load on the target host #snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.2 Get the 15-minute system load on the target host #snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.3 Get amount of available swap space on the target host #snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.4.4.0 Variable Descriptor Object Identifier System Group sysDescr 1.3.6.1.2.1.1.1 sysObjectID 1.3.6.1.2.1.1.2 sysUpTime 1.3.6.1.2.1.1.3 sysContact 1.3.6.1.2.1.1.4 sysName 1.3.6.1.2.1.1.5 sysLocation 1.3.6.1.2.1.1.6 sysServices 1.3.6.1.2.1.1.7 Interfaces Group ifNumber 1.3.6.1.2.1.2.1 ifTable 1.3.6.1.2.1.2.2 ifEntry 1.3.6.1.2.1.2.2.1 ifIndex 1.3.6.1.2.1.2.2.1.1 ifDescr 1.3.6.1.2.1.2.2.1.2 ifType 1.3.6.1.2.1.2.2.1.3 ifMtu 1.3.6.1.2.1.2.2.1.4 ifSpeed 1.3.6.1.2.1.2.2.1.5 ifPhysAddress 1.3.6.1.2.1.2.2.1.6 ifAdminStatus 1.3.6.1.2.1.2.2.1.7 ifOperStatus 1.3.6.1.2.1.2.2.1.8 ifLastChange 1.3.6.1.2.1.2.2.1.9 ifInOctets 1.3.6.1.2.1.2.2.1.10 ifInUcastPkts 1.3.6.1.2.1.2.2.1.11 ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12 ifInDiscards 1.3.6.1.2.1.2.2.1.13 ifInErrors 1.3.6.1.2.1.2.2.1.14 ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15 ifOutOctets 1.3.6.1.2.1.2.2.1.16 ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17 ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18 ifOutDiscards 1.3.6.1.2.1.2.2.1.19 ifOutErrors 1.3.6.1.2.1.2.2.1.20 ifOutQLen 1.3.6.1.2.1.2.2.1.21 ifSpecific 1.3.6.1.2.1.2.2.1.22 IP Group ipForwarding 1.3.6.1.2.1.4.1 ipDefaultTTL 1.3.6.1.2.1.4.2 ipInReceives 1.3.6.1.2.1.4.3 ipInHdrErrors 1.3.6.1.2.1.4.4 ipInAddrErrors 1.3.6.1.2.1.4.5 ipForwDatagrams 1.3.6.1.2.1.4.6 ipInUnknownProtos 1.3.6.1.2.1.4.7 ipInDiscards 1.3.6.1.2.1.4.8 ipInDelivers 1.3.6.1.2.1.4.9 ipOutRequests 1.3.6.1.2.1.4.10 ipOutDiscards 1.3.6.1.2.1.4.11 ipOutNoRoutes 1.3.6.1.2.1.4.12 ipReasmTimeout 1.3.6.1.2.1.4.13 ipReasmReqds 1.3.6.1.2.1.4.14 ipReasmOKs 1.3.6.1.2.1.4.15 ipReasmFails 1.3.6.1.2.1.4.16 ipFragsOKs 1.3.6.1.2.1.4.17 ipFragsFails 1.3.6.1.2.1.4.18 ipFragCreates 1.3.6.1.2.1.4.19 ipAddrTable 1.3.6.1.2.1.4.20 ipAddrEntry 1.3.6.1.2.1.4.20.1 ipAdEntAddr 1.3.6.1.2.1.4.20.1.1 ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2 ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3 ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4 ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5 ICMP Group icmpInMsgs 1.3.6.1.2.1.5.1 icmpInErrors 1.3.6.1.2.1.5.2 icmpInDestUnreachs 1.3.6.1.2.1.5.3 icmpInTimeExcds 1.3.6.1.2.1.5.4 icmpInParmProbs 1.3.6.1.2.1.5.5 icmpInSrcQuenchs 1.3.6.1.2.1.5.6 icmpInRedirects 1.3.6.1.2.1.5.7 icmpInEchos 1.3.6.1.2.1.5.8 icmpInEchoReps 1.3.6.1.2.1.5.9 icmpInTimestamps 1.3.6.1.2.1.5.10 icmpInTimestampReps 1.3.6.1.2.1.5.11 icmpInAddrMasks 1.3.6.1.2.1.5.12 icmpInAddrMaskReps 1.3.6.1.2.1.5.13 icmpOutMsgs 1.3.6.1.2.1.5.14 icmpOutErrors 1.3.6.1.2.1.5.15 icmpOutDestUnreachs 1.3.6.1.2.1.5.16 icmpOutTimeExcds 1.3.6.1.2.1.5.17 icmpOutParmProbs 1.3.6.1.2.1.5.18 icmpOutSrcQuenchs 1.3.6.1.2.1.5.19 icmpOutRedirects 1.3.6.1.2.1.5.20 icmpOutEchos 1.3.6.1.2.1.5.21 icmpOutEchoReps 1.3.6.1.2.1.5.22 icmpOutTimestamps 1.3.6.1.2.1.5.23 icmpOutTimestampReps 1.3.6.1.2.1.5.24 icmpOutAddrMasks 1.3.6.1.2.1.5.25 icmpOutAddrMaskReps 1.3.6.1.2.1.5.26 TCP Group tcpRtoAlgorithm 1.3.6.1.2.1.6.1 tcpRtoMin 1.3.6.1.2.1.6.2 tcpRtoMax 1.3.6.1.2.1.6.3 tcpMaxConn 1.3.6.1.2.1.6.4 tcpActiveOpens 1.3.6.1.2.1.6.5 tcpPassiveOpens 1.3.6.1.2.1.6.6 tcpAttemptFails 1.3.6.1.2.1.6.7 tcpEstabResets 1.3.6.1.2.1.6.8 tcpCurrEstab 1.3.6.1.2.1.6.9 tcpInSegs 1.3.6.1.2.1.6.10 tcpOutSegs 1.3.6.1.2.1.6.11 tcpRetransSegs 1.3.6.1.2.1.6.12 tcpConnTable 1.3.6.1.2.1.6.13 tcpConnEntry 1.3.6.1.2.1.6.13.1 tcpConnState 1.3.6.1.2.1.6.13.1.1 tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2 tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3 tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4 tcpConnRemPort 1.3.6.1.2.1.6.13.1.5 tcpInErrs 1.3.6.1.2.1.6.14 tcpOutRsts 1.3.6.1.2.1.6.15 UDP Group udpInDatagrams 1.3.6.1.2.1.7.1 udpNoPorts 1.3.6.1.2.1.7.2 udpInErrors 1.3.6.1.2.1.7.3 udpOutDatagrams 1.3.6.1.2.1.7.4 udpTable 1.3.6.1.2.1.7.5 udpEntry 1.3.6.1.2.1.7.5.1 udpLocalAddress 1.3.6.1.2.1.7.5.1.1 udpLocalPort 1.3.6.1.2.1.7.5.1.2 SNMP Group snmpInPkts 1.3.6.1.2.1.11.1 snmpOutPkts 1.3.6.1.2.1.11.2 snmpInBadVersions 1.3.6.1.2.1.11.3 snmpInBadCommunityNames 1.3.6.1.2.1.11.4 snmpInBadCommunityUses 1.3.6.1.2.1.11.5 snmpInASNParseErrs 1.3.6.1.2.1.11.6 NOT USED 1.3.6.1.2.1.11.7 snmpInTooBigs 1.3.6.1.2.1.11.8 snmpInNoSuchNames 1.3.6.1.2.1.11.9 snmpInBadValues 1.3.6.1.2.1.11.10 snmpInReadOnlys 1.3.6.1.2.1.11.11 snmpInGenErrs 1.3.6.1.2.1.11.12 snmpInTotalReqVars 1.3.6.1.2.1.11.13 snmpInTotalSetVars 1.3.6.1.2.1.11.14 snmpInGetRequests 1.3.6.1.2.1.11.15 snmpInGetNexts 1.3.6.1.2.1.11.16 snmpInSetRequests 1.3.6.1.2.1.11.17 snmpInGetResponses 1.3.6.1.2.1.11.18 snmpInTraps 1.3.6.1.2.1.11.19 snmpOutTooBigs 1.3.6.1.2.1.11.20 snmpOutNoSuchNames 1.3.6.1.2.1.11.21 snmpOutBadValues 1.3.6.1.2.1.11.22 NOT USED 1.3.6.1.2.1.11.23 snmpOutGenErrs 1.3.6.1.2.1.11.24 snmpOutGetRequests 1.3.6.1.2.1.11.25 snmpOutGetNexts 1.3.6.1.2.1.11.26 snmpOutSetRequests 1.3.6.1.2.1.11.27 snmpOutGetResponses 1.3.6.1.2.1.11.28 snmpOutTraps 1.3.6.1.2.1.11.29 snmpEnableAuthenTraps 1.3.6.1.2.1.11.30

路由器和交換機:

通過SNMP監控

系統監控

重要指標: CPU 、內存 、IO Input/Output(網絡、磁盤)

線程概念文章:

http://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=416915373&idx=1&sn=f80a13b099237534a3ef777d511d831a&scene=0#wechat_redirect&utm_source=tuicool&utm_medium=referral

1、CPU

三個重要的概念:(單位:時間片)
- 上下文切換:CPU調度器實施的進程的切換過程,上下文切換
- 運行隊列(負載):運行隊列
- 使用率:

確定服務類型:

- IO密集型 數據庫
- CPU密集型 web mail

確定性能基準線:

- 運行隊列:1-3線程 1CPU 4核 負載不超過12

- CPU使用:65%-70% 用戶態利用率
30-35% 內核態利用
0%-5% 空閑

上下文切換: 越少越好

監控工具:top vmstat mpstat

top: 按P CPU使用率排序;按M 內存使用率排序

vmstat:vmstat 1 10 每隔1秒獲取1次,次數10次

企業面試題:如果系統負載達到200了,SSH連接不上。如何讓SSH連接上

解答: 可以改變SSH的優先級

linux用戶態和內核態

技術分享圖片

2、內存

單位: 頁 4KB (讀取按頁為單位操作)

尋址、空間

監控工具:free、vmstat

技術分享圖片

根據available 查看可用內存

shared,進程間通信使用共享內存

技術分享圖片

si 數據從交換分區讀取到內存的大小

so 數據從內存讀取到交換分區的大小

3、硬盤

單位: 塊

監控工具: df -h 、iotop (安裝 yum install -y iotop)、iostat

IOPS IO‘s Per Second 每秒的IO請求次數

分類:順序IO 、隨機IO

技術分享圖片

4、網絡

監控工具:iftop、Smokeping、Piwik

http://alibench.com

http://ce.cloud.360.cn

http://ping.chinaz.com/

http://www.webpagetest.org/ (國外訪問站點的性能測試網址)

IBM nmon 二進制 性能測試用

http://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/index.html

鏈接:http://pan.baidu.com/s/1boXV6R9 密碼:sblf

chmod +x nmon16e_x86_rhel72 
./nmon16e_x86_rhel72
-c 采集的次數
-s 采集的間隔時間
-f 生成一個文件
-m 指定生成文件位置

技術分享圖片

我們可以直接輸入一個c 一個m一個d。這個是實時的一個狀態

技術分享圖片

./nmon16e_x86_rhel72 -c 10 -s 10 -f -m /tmp/
ls
localhost_160831_0435.nmon  nmon16e_x86_rhel72

前面為主機名後面是日期(年月日時分)
因為測試可能需要,我們要制作成表格,所以現在將文件上傳到桌面上
我們打開下載的工具

技術分享圖片

解壓文件夾,打開nmon analyser v34a.xls

技術分享圖片

點擊Analyse nmon data找到我們剛剛復制出來的文件,就可以看到了。

技術分享圖片

應用監控

舉例Nginx

依賴模塊安裝: yum install -y gcc glibc gcc-c++ pcre-devel openssl-devel wget

cd /usr/local/src

wget http://nginx.org/download/nginx-1.10.1.tar.gz

tar zxf nginx-1.10.1.tar.gz

備註: configure 是Shell腳本。執行它的作用:生成 Makefile文件

創建nginx用戶 useradd -s /sbin/nologin -M nginx

編譯安裝

?
1 2 3 4 ./configure --prefix=/usr/local/nginx-1.10.1 \ --user=nginx --group=nginx \ --with-http_ssl_module \ --with-http_stub_status_module

make

make install

ln -s /usr/local/nginx-1.10.1/ /usr/local/nginx

查看80端口是否被暫用,啟動nginx

?
1 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

netstat -ntlp

啟動狀態監控

?
1 2 3 4 5 6 7 8 9 10 server { listen 9003; server_name 0.0.0.0; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }

/usr/local/nginx/sbin/nginx -s reload

瀏覽器訪問

Active connections:當前活躍的連接數

Reading:當前讀取客戶端heardr的數量

Writing:當前返回給客戶端heardr的數量  #如果這個指標飆升,說明是後面的節點掛掉了,例如數據庫等。

Waiting:大體意思是已經處理完,等待下次請求的數量

提示:我們只需要關註活動鏈接即可

監控體系(二)