1. 保障企業數據的安全可靠。php
2. 爲客戶提供7*24小時服務。html
3. 不斷提高用戶的體驗。前端
http://blog.csdn.net/pan_tian/article/details/23270119java
網站可用性node
所謂網站可用性(availability)也即網站正常運行時間的百分比,業界用 N 個9 來量化可用性, 最常說的就是相似 「4個9(也就是99.99%)」 的可用性。mysql
描述 通俗叫法 可用性級別 年度停機時間ios
基本可用性 2個9 99% 87.6小時nginx
較高可用性 3個9 99.9% 8.8小時git
具備故障自動恢復能力的可用性 4個9 99.99% 53分鐘github
極高可用性 5個9 99.999% 5分鐘
若是想遠程管理服務器就有遠程管理卡,好比Dell idRAC,HP ILO,IBM IMM
查看硬件的溫度/風扇轉速,電腦有擼大師,服務器就有ipmitool。使用ipmitool實現對服務器的命令行遠程管理
查看硬件的溫度/風扇轉速,電腦有擼大師,服務器就有ipmitool。使用ipmitool實現對服務器的命令行遠程管理
yum -y install OpenIPMI ipmitool #->IPMI在物理機能夠成功,虛擬機不行 [root@KVM ~]# ipmitool sdr type Temperature Temp | 01h | ns | 3.1 | Disabled Temp | 02h | ns | 3.2 | Disabled Temp | 05h | ns | 10.1 | Disabled Temp | 06h | ns | 10.2 | Disabled Ambient Temp | 0Eh | ok | 7.1 | 22 degrees C Planar Temp | 0Fh | ns | 7.1 | Disabled IOH THERMTRIP | 5Dh | ns | 7.1 | Disabled CPU Temp Interf | 76h | ns | 7.1 | Disabled Temp | 0Ah | ns | 8.1 | Disabled Temp | 0Bh | ns | 8.1 | Disabled Temp | 0Ch | ns | 8.1 | Disabled
[root@m01 tools]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 78 Model name: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz Stepping: 3 CPU MHz: 2400.001 BogoMIPS: 4800.00 Hypervisor vendor: VMware Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 3072K NUMA node0 CPU(s): 0,1 [root@m01 tools]#
[root@m01 tools]# uptime 03:17:33 up 1:03, 2 users, load average: 0.18, 0.05, 0.01 當前系統時間up 運行時間 2users登陸的用戶數 平均負載 1,5,15minutes
最佳負載:過去一分鐘的平均負載等於CPU的核數(或者兩倍)
怎麼判斷服務器的負載太高:就是看你的過去1分鐘的平均負載是否超過CPU的核數(或者2倍)
top - 03:27:14 up 1:13, 2 users, load average: 0.00, 0.02, 0.00 #第一行和uptime同樣 Tasks: 90 total, 1 running, 89 sleeping, 0 stopped, 0 zombie #第二行 顯示當前進程統計信息 Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, #第三行 CPU的統計信息 0.0%us,用戶使用的cpu百分比 0.2%sy,系統使用CPU百分比 %id空閒的CPU百分比 Mem: 1004112k total, 395132k used, 608980k free, 26712k buffer #第四行:內存的統計信息 Swap: 786428k total, 0k used, 786428k free, 256904k cached #第五行:swap統計信息 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19352 1528 1228 S 0.0 0.2 0:01.70 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.87 migration/ 4 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/ 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.53 migration/ 8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/1 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/ 快捷鍵 z 加顏色 x高亮顯示 > 向右<向左
[root@m01 tools]# free -h total used free shared buffers cached Mem: 980M 480M 500M 228K 26M 341M -/+ buffers/cache: 112M 868M Swap: 767M 0B 767M 說明:centos6.5之前沒有-h參數,只有-m
vmstat用法
l 參數
l -a:顯示活躍和非活躍內存
l -f:顯示從系統啓動至今的fork數量 。-m:顯示slabinfo
l -n:只在開始時顯示一次各字段名稱。
l -s:顯示內存相關統計信息及多種系統活動數量。
u delay:刷新時間間隔。若是不指定,只顯示一條結果。
u count:刷新次數。若是不指定刷新次數,但指定了刷新時間間隔,這時刷新次數爲無窮。
l -d:顯示磁盤相關統計信息。
l -p:顯示指定磁盤分區統計信息
l -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別表明1000、1024、1000000、1048576字節(byte)。默認單位爲K(1024 bytes)
l -V:顯示vmstat版本信息。
[root@m01 ~]# vmstat 2 #每二秒顯示一次系統內存的統計信息 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 5748 7808 24796 168440 0 1 88 243 74 143 1 1 95 4 0 0 0 5748 7644 24828 168444 0 0 2 42 68 123 3 1 93 4 0 0 0 5748 7644 24828 168444 0 0 0 0 28 56 0 0 100 0 0 0 0 5748 7620 24852 168444 0 0 0 138 41 126 0 0 99 0 0 ^C 說明: 類別 項目 含義 說明 Procs r 等待執行的任務數 展現了正在執行和等待CPU資源的任務個數。當這個值超過了CPU數目,就會出現CPU瓶頸了 b 處在非中斷睡眠狀態的進程數 Memory swpd 正在使用的swap大小單位K free 空閒的內存空間 buff 已使用的buff大小,對塊設備的讀寫進行緩衝 cache 已使用的cache大小,文件系統的cache inact 非活躍內存大小 active 活躍的內存大小 Swap si 交換內存使用,由磁盤調入內存 so 交換內存使用,由內存調入磁盤 IO bi 從塊設備讀入的數據總量(讀磁盤) (KB/s), bo 寫入到塊設備的數據總理(寫磁盤) (KB/s) System in 每秒產生的中斷次數 cs 每秒產生的上下文切換次數 上面這2個值越大,會看到由內核消耗的CPU時間會越多 CPU us 用戶進程消耗的CPU時間百分比 us 的值比較高時,說明用戶進程消耗的CPU時間多,可是若是長期超過50% 的使用,那麼咱們就該考慮優化程序算法或者進行加速了 sy 內核進程消耗的CPU時間百分比 sy 的值高時,說明系統內核消耗的CPU資源多,這並非良性的表現,咱們應該檢查緣由。 id 空閒 wa IO等待消耗的CPU時間百分比 wa 的值高時,說明IO等待比較嚴重,這多是因爲磁盤大量做隨機訪問形成,也有多是磁盤的帶寬出現瓶頸(塊操做)。 [root@m01 ~]# vmstat 2 5 #每二秒顯示一次系統內存的統計信息,總共5次 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 5748 8108 25668 168456 0 1 86 239 73 142 1 1 95 3 0 0 0 5748 8108 25724 168472 0 0 0 180 48 108 0 0 99 1 0 0 0 5748 8108 25740 168456 0 0 0 16 33 76 0 1 100 0 0 0 0 5748 8108 25788 168480 0 0 2 68 77 143 3 0 96 1 0 0 0 5748 8108 25788 168476 0 0 0 0 26 57 0 1 100 0 0 [root@m01 ~]#
安裝 echo "192.168.12.200 mirrors.aliyun.com" >> /etc/hosts wget -O /etc/yum.repos.d/CentOS-Base.repo http://192.168.12.200/repo/Centos-6.repo wget -O /etc/yum.repos.d/epel.repo http://192.168.12.200/repo/epel-6.repo yum clean all yum -y install htop
[root@m01 tools]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.1G 7.4G 13% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 35M 146M 19% /boot [root@m01 tools]# [root@m01 tools]# dd if=/dev/zero of=tese.data bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.0389443 s, 269 MB/s [root@m01 tools]# if input file輸入文件 /dev/zero 這是系統的特殊設備,可以源源不斷的產生0字符流 of output file 輸出設備 bs block size 塊大小 count block 快的數量 總結:產生的test.data文件大小 bs * count 經驗:最佳測試磁盤寫的速度的測試文件
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND< 1308 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % -bash 2488 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % -bash 50 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [aio/0] 51 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [aio/1] 22 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [async/mgr] 33 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ata_aux] 34 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ata_sff/0] 35 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ata_sff/1] 25 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bdi-~fault] 773 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bluetooth] 19 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cgroup] 52 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [crypto/0] 53 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [crypto/1] 66 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [deferwq]
yum -y install iftop nethogs iftop:查看網卡流量(默認監控網卡eth0) [root@m01 tools]# iftop interface: eth0 IP address is: 10.0.0.61 MAC address is: 00:0c:29:ab:6f:34 12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb └─────────────┴──────────────┴─────────────┴──────────────┴────────────── 10.0.0.61 => 10.0.0.253 992b 1.17Kb 1.50Kb <= 160b 160b 187b 10.0.0.255 => 10.0.0.253 0b 0b 0b <= 0b 187b 78b 10.0.0.61 => public1.alidns.com 0b 55b 91b <= 0b 117b 179b ───────────────────────────────────────────────────────────────────────── TX: cum: 4.77KB peak: 4rates: 992b 1.22Kb 1.59Kb RX: 1.30KB 1.84Kb 160b 464b 444b TOTAL: 6.07KB 6.33Kb 1.12Kb 1.68Kb 2.02Kb 監控eth1網卡 [root@m01 tools]# iftop -i eth1 interface: eth1 IP address is: 172.16.1.61 MAC address is: 00:0c:29:ab:6f:3e 12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb └─────────────┴──────────────┴─────────────┴──────────────┴────────────── ───────────────────────────────────────────────────────────────────────── TX: cum: 0B peak: rates: 0b 0b 0b RX: 0B 0b 0b 0b 0b TOTAL: 0B 0b 0b 0b 0b nethogs:查看每一個進程流量 [root@m01 tools]# nethogs Waiting for first packet to arrive (see sourceforge.net bug 1019381) NetHogs version 0.8.5 PID USER PROGRAM DEV SENT RECEIVED 2486 root sshd: root@pts/2 eth0 0.142 0.047 KB/sec ? root unknown TCP 0.000 0.000 KB/sec TOTAL 0.142 0.047 KB/sec
mpstat是Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統裏,其不但能查看全部CPU的平均情況信息,並且可以查看特定CPU的信息。mpstat最大的特色是:能夠查看多核心cpu中每一個計算核心的統計數據;而相似工具vmstat只能查看系統總體cpu狀況。
語法
mpstat [-P {|ALL}] [internal [count]]
參數
-P {|ALL} 表示監控哪一個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次採樣的間隔時間、
count 採樣的次數,count只能和delay一塊兒使用
當沒有參數時,mpstat則顯示系統啓動之後全部信息的平均值。有interval時,第一行的信息自系統啓動以來的平均信息。從第二行開始,輸出爲前一個interval時間段的平均信息。
實例1-1 #查看多核CPU核心的當前運行情況信息, 每2秒更新一次
[root@m01 ~]# mpstat -P ALL 2 Linux 2.6.32-696.el6.x86_64 (m01) 10/10/2017 _x86_64_ (1 CPU) 04:25:04 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 04:25:06 PM all 3.02 0.00 0.00 2.51 0.00 0.00 0.00 0.00 94.47 04:25:06 PM 0 3.02 0.00 0.00 2.51 0.00 0.00 0.00 0.00 94.47 04:25:06 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 04:25:08 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 04:25:08 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 04:25:08 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 04:25:10 PM all 0.00 0.00 0.00 1.50 0.00 0.00 0.00 0.00 98.50 04:25:10 PM 0 0.00 0.00 0.00 1.50 0.00 0.00 0.00 0.00 98.50 04:25:10 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 04:25:12 PM all 0.00 0.00 0.50 7.00 0.00 0.00 0.00 0.00 92.50 04:25:12 PM 0 0.00 0.00 0.50 7.00 0.00 0.00 0.00 0.00 92.50 說明: %user 在internal時間段裏,用戶態的CPU時間(%),不包含nice值爲負進程 (usr/total)*100 %nice 在internal時間段裏,nice值爲負進程的CPU時間(%) (nice/total)*100 %sys 在internal時間段裏,內核時間(%) (system/total)*100 %iowait 在internal時間段裏,硬盤IO等待時間(%) (iowait/total)*100 %irq 在internal時間段裏,硬中斷時間(%) (irq/total)*100 %soft 在internal時間段裏,軟中斷時間(%) (softirq/total)*100 %idle 在internal時間段裏,CPU除去等待磁盤IO操做外的由於任何緣由而空閒的時間閒置時間(%) (idle/total)*100
l 內存
l 磁盤
l 網絡
l cpu負載
l 硬件、溫度、風扇
l 軟件服務
一個軟件可以實現99%監控
Zabbix是一個企業級的、開源的、分佈式的監控套件
Zabbix能夠監控網絡和服務的監控情況. Zabbix利用靈活的告警機制,容許用戶對事件發送基於Email的告警. 這樣能夠保證快速的對問題做出相應. Zabbix能夠利用存儲數據提供傑出的報告及圖形化方式. 這一特性將幫助用戶完成容量規劃.
Zabbix支持polling和trapping兩種方式. 全部的Zabbix報告均可以經過配置參數在WEB前端進行訪問. Web前端將幫助你在任何區域都可以迅速得到你的網絡及服務情況. Zabbix能夠經過儘量的配置來扮演監控你的IT基礎框架的角色,而無論你是來自於小型組織仍是大規模的公司.
Zabbix是零成本的. 由於Zabbix編寫和發佈基於GPL V2協議. 意味着源代碼是免費發佈的.
1. nagios+cacti
Nagios是插件式的結構,它自己沒有任何監控功能,全部的監控都是經過插件進行的,所以其是高度模塊化和富於彈性的。Nagios監控的對象可分爲兩類:主機和服務。主機一般指的是物理主機,如服務器、路由器、工做站和打印機等,這裏的主機也能夠是虛擬設備,如xen虛擬出的Linux系統;而服務一般指某個特定的功能,如提供http服務的httpd進程等。而爲了管理上的方便,主機和服務還能夠分別被規劃爲主機組和服務組等。
Nagios不監控任何具體數值指標(如操做系統上的進程個數),它僅用四種抽象屬性對被監控對象的狀態進行描述:OK、WARNING, CRITICAL和UNKNOWN。因而,管理員只須要對某種被監控對象的WARNING和CRITICAL狀態的閾值進行關注和定義便可。Nagios經過將WARTING和CRTICAL的閾值傳遞給插件,並由插件負責某具體對象的監控及結果分析,其輸出信息爲狀態信息(OK,WARNING,CRITICAL或UNKOWN)以及一些附加的詳細說明信息。
Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。
Cacti是經過 snmpget來獲取數據,使用 RRDtool繪畫圖形,並且你徹底能夠不須要了解RRDtool複雜的參數。它提供了很是強大的數據和用戶管理功能,能夠指定每個用戶能查看樹狀結構、host以及任何一張圖,還能夠與LDAP結合進行用戶驗證,同時也能本身增長模板,功能很是強大完善。界面友好。軟件 Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來做出各式各樣的監控圖。
cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,而後用rrdtool儲存和更新數據,當用戶須要查看數據的時候用rrdtool生成圖表呈現給用戶。所以,snmp和rrdtool是cacti的關鍵。Snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成。
Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機ip、snmp團體名、端口號、模板信息等變量。
snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(Round Robin Archive),它可以存儲的數據筆數在建立時就已經定義。
1.環境準備
[root@m01 tools]# hostname -I 10.0.0.61 172.16.1.61 [root@m01 tools]# /etc/init.d/iptables status iptables: Firewall is not running. [root@m01 tools]# ll -d /tmp/ drwxrwxrwt. 3 root root 4096 Sep 23 02:20 /tmp/ [root@m01 tools]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@m01 tools]# 安裝環境選擇 選擇LAMP仍是LNMP LAMP 做爲測試軟件快速平臺 開源軟件基於LAMP架構 這是全新的物理機: yum安裝 LAMP+zabbix 編譯安裝nginx,php,二進制mysql apache==》cp -R /usr/share/zabbix/ /var/www/html/ nginx ==》 cp -R /usr/share/zabbix/ /application/nginx/html apache的配置文件是有zabbix安裝包代爲修改 可是nginx的配置文件就須要本身改了 php :和LAMP同樣的操做,執行sed命令修改配置文件..須要注意php單獨啓動服務和編譯參數的模塊是否齊全 sed -i.ori 's#max_execution_time = 30#max_execution_time = 300#;s#max_input_time = 60#max_input_time = 300#;s#post_max_size = 8M#post_max_size = 16M#;910a date.timezone = Asia/Shanghai' /application/php/lib/php.ini MySQL:建立數據庫,受權,導入數據 這是亂七八糟物理機 可否重裝系統 只能編譯安裝,yum安裝雖然可以解決軟件依賴問題,可是解決不了依賴衝突的問題 編譯安裝LNMP 編譯安裝zabbix server 2.下載zabbix包 wget http://192.168.12.200/zabbix/zabbix3.0.9_yum.tar.gz
3.安裝zabbix
離線安裝 第一步下載 wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.28/zabbix-3.0.28.tar.gz/download #這仍是官方下載複製 第二步解壓包 [root@m01 tools]# tar xfP zabbix3.0.9_yum.tar.gz 第三步一鍵安裝 [root@m01 tools]# yum -y --nogpgcheck -C install httpd mysql-server php55w php55w-mysql php55w-common php55w-gd php55w-mbstring php55w-mcrypt php55w-devel php55w-xml php55w-bcmath yum -y --nogpgcheck -C install zabbix-web zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-java-gateway wqy-microhei-fonts net-snmp net-snmp-utils (1)安裝LAMP:yum安裝Apache、mysql、PHP5.5 安裝http: yum -y install httpd 安裝mysql: yum -y install mysql-server 安裝php5.5: rpm -ivh http://repo.webtatic.com/yum/el6/x86_64/webtatic-release-6-9.noarch.rpm yum -y install php55w php55w-mysql php55w-common php55w-gd php55w-mbstring php55w-mcrypt php55w-devel php55w-xml php55w-bcmath (2)安裝Zabbix Server rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm yum -y install zabbix-web zabbix-server-mysql zabbix-web-mysql 安裝配置Zabbix Agent yum -y localinstall http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.9-1.el6.x86_64.rpm (3)配置相關服務 MySQL配置 \cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 啓動MySQL /etc/init.d/mysqld start 建立用戶並受權 mysql create database zabbix character set utf8 collate utf8_bin; grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix'; flush privileges; exit 導入數據文件 cd /usr/share/doc/zabbix-server-mysql-3.0.9 zcat create.sql.gz |mysql -uzabbix -pzabbix zabbix 相關數據修改 # 修改php配置文件 egrep -n "^post_max_size|^max_execution_time|^max_input_time|^date.timezone" /etc/php.ini sed -i 's#max_execution_time = 30#max_execution_time = 300#;s#max_input_time = 60#max_input_time = 300#;s#post_max_size = 8M#post_max_size = 16M#;910a date.timezone = Asia/Shanghai' /etc/php.ini # 修改zabbix_server配置文件 sed -i '115a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf # 網頁文件 cp -R /usr/share/zabbix/ /var/www/html/ # 文件受權 chmod -R 755 /etc/zabbix/web chown -R apache.apache /etc/zabbix/web # 啓動apache && zabbix echo "ServerName 127.0.0.1:80">>/etc/httpd/conf/httpd.conf /etc/init.d/httpd start /etc/init.d/zabbix-server start 服務開機啓動順序:必須先啓動mysql,而後啓動zabbix server [root@m01 ~]# tail -4 /etc/rc.local /etc/init.d/mysqld start /etc/init.d/zabbix-server start /etc/init.d/httpd start /etc/init.d/zabbix-agent start [root@web01 ~]# tail -1 /etc/rc.local /etc/init.d/zabbix-agent start
客戶端服務端都須要安裝agent程序 rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.9-1.el6.x86_64.rpm 客戶端配置 修改配置文件 sed -i 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf 啓動agent /etc/init.d/zabbix-agent start 在服務端執行檢查命令 [root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]" 0.000000 [root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "system.cpu.load[all,avg1]" 0.000000 總結圖示
第一步: http://10.0.0.61/zabbix/setup.php
第二步:點擊下一步
第三步:點擊下一步
第四步:點擊下一步
第五步
第六步:點擊完成
第七步:點擊完成後安裝結束
設置中文顯示中文界面
最後界面就是中文的界面了。
主機名稱:zabbix程序識別用的名字
可見的名稱:給人看,顯示在網頁上的
羣組:同窗(主機)與小組(羣組)方便管理
agent代理程序的接口
agent代理程序的接口:指定客戶端IP地址
檢查客戶端是否被監控的命令
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]" 0.090000 [root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "system.cpu.load[all,avg1]" 0.000000 [root@m01 ~]#
監控出現圖形了,可是可能會出現亂碼
解決中文亂碼 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum -y install wqy-microhei-fonts \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
web01客戶端執行 [root@web01 ~]# sed -i '293a UserParameter=login-user,who|wc -l' /etc/zabbix/zabbix_agentd.conf [root@web01 ~]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] [root@web01 ~]#
服務端操做 [root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "login-user" 1 [root@m01 ~]#
模板的功能:一處建立,到處使用
告訴服務端server你該去哪裏獲取什麼方面數據
須要報警的監控項設置觸發器
嚴重性:
² 警告級別的報警發給初級運維
² 通常嚴重級別的報警發給初級運維,中級運維
² 嚴重級別的報警發給初級運維,中級運維,高級運維
² 災難級別的報警發給初級運維,中級運維,高級運維,總監
郵件報警:存在收不到的風險
微信報警:通知及時
短信報警:不依賴網絡
電話報警:有信號就能夠報警
APP報警
2安裝 Agent 1.切換到zabbix腳本目錄(如何查看zabbix腳本目錄): vi /etc/zabbix/zabbix_server.conf 查看AlertScriptsPath cd /usr/lib/zabbix/alertscripts/ 2.獲取OneITSM agent包: wget http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.0.0.tar.gz tar -zxf oneitsm_zabbix_release-1.0.0.tar.gz cd oneitsm/bin bash install.sh 7145112f-7f7a-8cfb-cd26-810036d6d479 start to create config file... Zabbix管理地址: 10.0.0.61/zabbix Zabbix管理員帳號: Admin Zabbix管理員密碼: start to auth by zabbix admin user and password... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 70 0 70 0 125 847 1514 --:--:-- --:--:-- --:--:-- 0 auth success! start to create mediatype... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 397 130 130 130 0 267 2706 5559 --:--:-- --:--:-- --:--:-- 0 media type resonse:{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Media type \"oneitsm media\" already exists."},"id":1} create media type failed! error message:{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Media type \"oneitsm media\" already exists."},"id":1} [root@m01 bin]#
聚合圖形:將同一類型的監控放在一塊兒看,容易對比分析
幻燈片:輪流播放聚合圖形 . 模板的共享 https://github.com/zhangyao8/zabbix-community-repos https://share.zabbix.com/
1. 建立一個監控認識有哪些服務端口的模板
2. 添加一個應用集
3. 新建一個監控項
4. 添加觸發器
怎麼監控進程?
proc.num[<name>,<user>,<state>,<cmdline>] 進程數。返回整數 zabbix_get -s 172.16.1.8 -p 10050 -k 'proc.num[nginx]' [root@m01 bin]# zabbix_get -s 172.16.1.31 -p 10050 -k "proc.num[nfsd]" 8 [root@m01 bin]#
怎麼監控端口?
net.tcp.listen[port] 檢查 TCP 端口 是否處於偵聽狀態。返回 0 - 未偵聽;1 - 正在偵聽 net.tcp.port[<ip>,port] 檢查是否能創建 TCP 鏈接到指定端口。返回 0 - 不能鏈接;1 - 能夠鏈接 [root@m01 bin]# zabbix_get -s 172.16.1.8 -p 10050 -k 'net.tcp.port[,80]' 1 [root@m01 bin]# zabbix_get -s 172.16.1.8 -p 10050 -k 'net.tcp.port[,873]' 1 [root@m01 bin]# zabbix_get -s 172.16.1.8 -p 10050 -k 'net.tcp.port[873]' ZBX_NOTSUPPORTED: Invalid second parameter.
網頁建立模板進行監控80端口 三個web服務器中進行web檢測 寫腳本 [root@web01 conf]# cat /server/scripts/nginx_check.sh char=`curl -s http://10.0.0.8/test.html` [ "$char" == "oldboy" ] && echo 1 ||echo 0 [root@web01 conf]# 寫模板文件 [root@web01 conf]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf UserParameter=nginx_check,/bin/sh /server/scripts/nginx_check.sh [root@web01 conf]# 重啓客戶端 [root@web01 conf]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] 監控機進行測試 [root@m01 bin]# zabbix_get -s 172.16.1.8 -p 10050 -k "nginx_check" 1 [root@m01 bin]# zabbix_get -s 172.16.1.7 -p 10050 -k "nginx_check" 1 [root@m01 bin]# zabbix_get -s 172.16.1.9 -p 10050 -k "nginx_check" 1 [root@m01 bin]# [root@m01 bin]# zabbix_get -s 172.16.1.7 -p 10050 -k "nginx_check" 0 #0是不正常1是正常 [root@m01 bin]#
如何排查自定義監控報錯:
UserParameter=key,shell command 1. 如今命令行測試你的shell command的結果和你的指望是否一致 [root@web01 ~]# mysqladmin -uroot -poldboy123 ping 2>/dev/null|grep -c alive 1 2. 將符合預期的shell command寫入到咱們的自定義監控文件中 UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive 改成 UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin -uroot -poldboy123 ping 2>/dev/null|grep -c alive 3. 改完配置文件記住重啓生效 4. 在服務端用zabbix_get命令 [root@db01 zabbix_agentd.d]# tail -2 userparameter_mysql.conf UserParameter=mysql.ping,/application/mysql/bin/mysqladmin -uroot -p123456 ping 2>/dev/null | grep -c alive UserParameter=mysql.version,mysql -V 重啓 [root@db01 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] 服務端測試 [root@m01 zabbix_agentd.d]# zabbix_get -s 172.16.1.51 -p 10050 -k 'mysql.ping' 0#發現mysql命令找不到 在客戶端模板配置文件裏面命令使用絕對路徑 [root@m01 zabbix_agentd.d]# zabbix_get -s 172.16.1.51 -p 10050 -k 'mysql.ping' 1 [root@m01 zabbix_agentd.d]#
最後在監測中查看web監測
修改配置加入server標籤 [root@web03 ~]# cat /application/nginx/conf/nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; ######status######### server { listen 127.0.0.1:80; stub_status on; access_log off; } server { listen 10.0.0.9; location / { root html; index index.html index.htm; } } include extra/www.conf; include extra/bbs.conf; include extra/blog.conf; } 重啓服務 檢查狀態 [root@web03 ~]# curl 127.0.0.1/nginx_status Active connections: 1 server accepts handled requests 8 8 8 Reading: 0 Writing: 1 Waiting: 0 [root@web03 ~]# [root@web03 ~]# cat >> /etc/zabbix/zabbix_agentd.d/userparameter_nginx_status.conf <<END > UserParameter=nginx_active,curl -s 127.0.0.1/nginx_status|awk '/Active/ {print $NF}' > UserParameter=nginx_accepts,curl -s 127.0.0.1/nginx_status|awk 'NR==3 {print $1}' > UserParameter=nginx_handled,curl -s 127.0.0.1/nginx_status|awk 'NR==3 {print $2}' > UserParameter=nginx_requests,curl -s 127.0.0.1/nginx_status|awk 'NR==3 {print $3}' > UserParameter=nginx_reading,curl -s 127.0.0.1/nginx_status|awk 'NR==4 {print $2}' > UserParameter=nginx_writing,curl -s 127.0.0.1/nginx_status|awk 'NR==4 {print $4}' > UserParameter=nginx_waiting,curl -s 127.0.0.1/nginx_status|awk 'NR==4 {print $6}' > END [root@web03 ~]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] [root@web03 ~]# 服務端測試 [root@m01 bin]# zabbix_get -s 172.16.1.8 -p 10050 -k "nginx_waiting" Reading: 0 Writing: 1 Waiting: 0 [root@m01 bin]# zabbix_get -s 172.16.1.8 -p 10050 -k "nginx_accepts" 58 58 58 [root@m01 bin]# 網頁進行自定義監控
服務端自動發現局域網中全部的客戶端agent(主動模式)
優勢:方便找到全部的客戶端,不會遺漏
缺點:一旦agent過多,server壓力很大,每隔一段時間server會掃描一次局域網中的全部機器
全部的客戶端agent主動去服務端server登記註冊(小弟上門求收留)被動模式
優勢:對服務端的壓力最低。
缺點:配置過程稍微複雜
應用場景:當自動發現時,server端壓力過大時,用自動註冊
修改配置文件 [root@web03 zabbix_agentd.d]# sed -i 's#Hostname=Zabbix server#Hostname=web03#' /etc/zabbix/zabbix_agentd.conf [root@web03 zabbix_agentd.d]# sed -i 's#ServerActive=127.0.0.1#ServerActive=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf [root@web03 zabbix_agentd.d]# sed -i '176a HostMetadataItem=system.uname' /etc/zabbix/zabbix_agentd.conf 重啓 [root@web03 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] [root@web03 zabbix_agentd.d]#
第9章 分佈式監控
默認只能監控同一個局域網的機器
一臺sever的監控主機數量是有限的
功能:
可以減輕服務端的壓力
zabbix server 只能在同一個局域網中監控
[root@web01 tools]# wget http://192.168.12.200/zabbix/zabbix-proxy-mysql-3.0.9-1.el6.x86_64.rpm echo "192.168.12.200 mirrors.aliyun.com" >> /etc/hosts wget -O /etc/yum.repos.d/CentOS-Base.repo http://192.168.12.200/repo/Centos-6.repo wget -O /etc/yum.repos.d/epel.repo http://192.168.12.200/repo/epel-6.repo yum clean all
yum -y localinstall zabbix-proxy-mysql-3.0.9-1.el6.x86_64.rpm
zabbix proxy須要數據庫存儲相關配置,但不存儲監控數據 生產環境:在proxy 1 mysql> create database zabbix_proxy character set utf8 collate utf8_bin; Query OK, 1 row affected (0.06 sec) mysql> grant all privileges on zabbix_proxy.* to zabbix@'172.16.1.%' identified by 'zabbix'; Query OK, 0 rows affected (0.15 sec) mysql>
web客戶端傳文件到服務端 scp /usr/share/doc/zabbix-proxy-mysql-3.0.9/schema.sql.gz 10.0.0.61:/server/ m01導入文件 zcat /server/schema.sql.gz |mysql -uroot zabbix_proxy
vim /etc/zabbix/zabbix_proxy.conf Server=10.0.0.61 Hostname=web01 DBName=zabbix_proxy DBUser=zabbix DBPassword=zabbix DBHost=172.16.1.61
[root@web01 tools]# /etc/init.d/zabbix-proxy start Starting Zabbix proxy: [ OK ] [root@web01 tools]# tailf /var/log/zabbix/zabbix_proxy.log 39637:20171013:113558.590 cannot send heartbeat message to server at "172.16.1.61": proxy "web01" not found 39651:20171013:113558.608 proxy #16 started [housekeeper #1] 39652:20171013:113558.618 proxy #17 started [http poller #1] 39654:20171013:113558.619 proxy #19 started [history syncer #1] 39650:20171013:113558.621 proxy #15 started [icmp pinger #1] 39653:20171013:113558.621 proxy #18 started [discoverer #1] 39655:20171013:113558.626 proxy #20 started [history syncer #2] 39658:20171013:113558.639 proxy #23 started [self-monitoring #1] 39657:20171013:113558.642 proxy #22 started [history syncer #4] 39656:20171013:113558.648 proxy #21 started [history syncer #3]
[root@web01 ~]# sed -i 's#172.16.1.61#172.16.1.8#g' /etc/zabbix/zabbix_agentd.conf [root@web01 ~]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] [root@web01 ~]#
將代理節點註冊到zabbix server中
能用zabbix agent:系統可以安裝zabbix軟件的時候用,交換機打印機等智能設備不能使用zabbix程序。
SNMP是專用來設備監控
優勢:軟件小巧,因此設備均可以安裝使用
缺點:支持功能少
生產環境建議:先安裝使用agent,若不能安裝則使用SNMP。
[root@m01 server]# rpm -qa |grep snmp net-snmp-5.5-60.el6.x86_64 net-snmp-utils-5.5-60.el6.x86_64 net-snmp-libs-5.5-60.el6.x86_64 [root@m01 server]# 沒有就安裝 yum -y install net-snmp net-snmp-utils 配置snmp [root@m01 ~]# sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf [root@m01 ~]# [root@m01 ~]# /etc/init.d/snmpd start Starting snmpd: [ OK ] [root@m01 ~]# 使用 [root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname SNMPv2-MIB::sysName.0 = STRING: m01 [root@m01 ~]# [root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysContact SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf) [root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 SysService SNMPv2-MIB::sysServices = No Such Instance currently exists at this OID [root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 hrSWRunName HOST-RESOURCES-MIB::hrSWRunName.1 = STRING: "init" HOST-RESOURCES-MIB::hrSWRunName.2 = STRING: "kthreadd" HOST-RESOURCES-MIB::hrSWRunName.3 = STRING: "migration/0" HOST-RESOURCES-MIB::hrSWRunName.4 = STRING: "ksoftirqd/0" HOST-RESOURCES-MIB::hrSWRunName.5 = STRING: "stopper/0" 說明: http://www.ttlsa.com/monitor/snmp-oid/