轉載
原文地址:https://www.cnblogs.com/syy1757528181/p/13641460.html
一、監控基本概述
1、什么是監控
- 監控系統是整個運維環節,乃至整個產品生命周期中最重要的一環
- 事前'及時預警發現故障
- 事后'提供詳細的數據用於追查定位問題
2、為什么要做監控
3、主要監控工具
- CACTI:'網絡'監控,Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具
- NAGIOS:'系統'監控,很久之前使用的,需要人為定義,沒有圖形,沒有辦法查詢歷史
- ZABBIX:分布式監控
- open-falcon:小米監控產品,開源的
- premethous:普羅米修斯,監控'容器',docker,K8S
- lepus:天兔,'數據庫'監控
4、怎么監控
- 查看內存使用 free -m
- 取出監控的值
- 對比某個限制的值
- 如果超過限制的值則告警
5、監控的內容
1.公有雲:雲監控,雲平台自帶的監控 2.硬件監控:CPU溫度,主板溫度,磁盤,網卡,風扇轉速 3.系統監控:cpu,內存,網絡,磁盤剩余 4.服務監控: 1)MySQL:主從復制是否有延遲(zabbix監控模板) 2)redis:主從復制是否有延遲 '監控思路':zabbix沒有固定模板,可以在主庫中set一個key為時間戳,然后從庫會同步這個時間戳(動態),寫腳本實時獲取這兩個時間戳,做對比。 3)NFS:磁盤掛載狀況 4)tomcat:JVM監控,老年代、新生代、永久帶、full-gc、垃圾回收 5)rsync的同步情況,MD5校驗文件是否被篡改 5.web頁面監控:請求時間,響應時間,加載時間,nginx狀態碼監控,pv,uv,ip 6.網絡監控:網卡流量(出入流量),帶寬,'監控寶' 7.業務監控: 1)URL監控 (curl) 2)api監控:針對業務的接口 (basic.action 登錄接口) 3)nginx狀態碼 (curl) 4)tomcat日志監控 (elk) 8.日志監控:ELK,第三方'日志易' 9.安全監控:firewalld,WAF,牛盾雲,安全狗 10.容器監控:premethous,'普羅米修斯' #Page View(PV 頁面訪問量)又叫做頁面瀏覽量、點擊量 #Unique Visitor(UV 獨立訪客),一般地,我們可以用兩個數值標准來統計訪問某網站的訪客,即“訪問次數”和“獨立訪客(問)數” #Internet Protocol(IP 獨立IP數),也稱IP數,指1天內使用不同IP地址的用戶訪問網站的數量,同一IP無論訪問了幾個頁面,獨立IP數均為1
二、腳本監控
監控命令
1、監控cpu
w top htop uptime glances ps #不管用什么命令監控,查看CPU,我們都必須了解,系統的用戶態和內核態。 us: 用戶態 跟用戶的操作有關35% sy: 內核態 跟內核的處理有關65% id: CPU空閑 #當我們執行一個命令的時候,很快能出來結果,但是有多少人知道,這個很快,他都占用了哪些時間呢? [root@web02 ~]# time ls real 0m0.002s 真實執行時間 user 0m0.001s 用戶執行時間 sys 0m0.001s 系統執行時間
2、監控內存
free glances top htop
3、監控磁盤
df glances iotop iostat dstat
#以兆為單位,每秒執行一次,執行10次
[root@web02 ~]# iostat -dm 1 10
4、監控網絡
glances ifconfig iftop ip route
nethogs 該命令可以查看某個進程所使用的流量
監控內存實例
'每1分鍾'監控當前系統的內存使用狀態,如果可用'低於100MB'則發送郵件。同時'打印'當前還剩余多少內存 #思路 1.如何獲取內存的狀態信息 free -m 2.如何獲取內存的可用狀態 free -m|awk '/Mem/{print $NF}' 3.如何進行數字的比對,高於100MB不處理,低於100MB,發送郵件。 4.如何每分鍾執行。
隨着時間的推移,用戶不斷增多,服務消耗的內存越來越多,當系統內存不足的時候,可能會導致系統產生'oom'(out of memory) 1.當系統內存不足時就會大量使用swap('虛擬內存') 2.當系統大量使用swap的時候,'系統會特別卡' #web服務一般開啟swap,盡量防止業務宕掉,數據庫 容器一般關閉swap #少量使用swap可以暫時解決內存溢出的問題,當使用大量的虛擬內存的時候,系統卡慢 #有時可能內存還有剩余300M或者500M,但是swap依然被使用
腳本:
[root@zabbix ~]# vim /scripts/free.sh #!/bin/bash Hostname_Ip=$(hostname)_$(hostname -I|awk '{print $2}') while true do Date=$(date +%F) Mem_Free=$(free -m|awk '/^Mem/{print $NF}') Swap_used=$(free -m | awk '/^Swap/ {print $3}') if [ $Mem_Free -lt 100 -a $Swap_used -gt 100 ];then echo "$Date: $Hostname_Ip 內存可用量不足100M並且Swap空間占用超過100M,內存當前剩余: $Mem_Free,Swap空間使用達到: $Swap_used" |mail -s '內存不足' xxx fi sleep 60 done
三、zabbix安裝
1、zabbix架構
- Zabbix agents '部署'在被監控目標上,用於主動監控本地資源和應用程序,並將'收集'的數據發送給 Zabbix server
- Zabbix server 是 Zabbix軟件的核心組件,agent 向其報告可用性、系統完整性信息和統計信息。server也是存儲所有配置信息、統計信息和操作信息的'核心存儲庫'。
- 數據庫:所有配置信息以及 Zabbix 采集到的數據都被'存儲'在數據庫中
- zabbix web 為了從任何地方和'任何平台'輕松訪問 Zabbix ,我們提供了基於 web 的界面。該界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 運行在同一台物理機器上。
- Zabbix proxy 可以代替 Zabbix server'采集'性能和可用性數據。Zabbix proxy在Zabbix的部署是可選部分;但是proxy的部署可以很好的'分擔'單個Zabbix server的負載。做'集群'的時候使用該模塊
2、zabbix 主動與被動模式配置
參見:https://www.cnblogs.com/liyuanhong/p/14694739.html