防偽碼:真理不需色彩,美麗不需涂飾
一、監(jiān)控概述:
·初級(jí):
·1.識(shí)別監(jiān)控對(duì)象 (分級(jí))
·2.理解監(jiān)控對(duì)象 (理論基礎(chǔ))
·3.細(xì)分監(jiān)控對(duì)象的指標(biāo)
·4.確定告警的基準(zhǔn)線
·預(yù)中級(jí):
1. 工具化和監(jiān)控分離
2. 監(jiān)控對(duì)象的分類:
2.1 硬件監(jiān)控 (方法:機(jī)房巡檢、IPMI、SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議、)
2.2 系統(tǒng)監(jiān)控 (對(duì)象:cpu、內(nèi)存、IO【磁盤、網(wǎng)絡(luò)】)
2.3 服務(wù)監(jiān)控 (對(duì)象:分類服務(wù))
2.4 日志監(jiān)控 (方法:Elastic Stack)
2.5 網(wǎng)絡(luò)監(jiān)控 (方法: 第三方、Smokeping)
2.6 APM應(yīng)用性能管理 (工具:pinpoint APM)
2.7 流量監(jiān)控 (工具:Piwik、xx統(tǒng)計(jì)、xx分析)
2.8 其他監(jiān)控 (APP監(jiān)控、安全監(jiān)控、業(yè)務(wù)監(jiān)控、輿論監(jiān)控、xx監(jiān)控等)
3. 掌握一個(gè)監(jiān)控工具。例如:zabbix
·中級(jí):
0.標(biāo)準(zhǔn)化監(jiān)控(標(biāo)準(zhǔn)化的腳本、模板、....)
1. 分布式監(jiān)控 (主動(dòng)、被動(dòng)、分布式)
2. 自動(dòng)化監(jiān)控 (自動(dòng)發(fā)現(xiàn)、主動(dòng)注冊(cè)【Agent主動(dòng)注冊(cè)、Server主動(dòng)添加(API)】)
3. 性能優(yōu)化 (數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)查詢)
4. 二次開發(fā) (定制報(bào)表、API調(diào)用、)
·進(jìn)階:(精通到放棄)
1. 告警閾值動(dòng)態(tài)化
2. 智能告警:【1.告警去重 2.依賴】
3. 故障自愈 (事件驅(qū)動(dòng)、主動(dòng)控制)
4. 大規(guī)模告警
硬件監(jiān)控:
1. 機(jī)房巡檢
2. 通過(guò)網(wǎng)絡(luò)來(lái)巡檢
例如:DELL 通過(guò)iDRAC口監(jiān)控
HP 通過(guò)ILO
IBM 通過(guò)IMM
由于每個(gè)廠商不一樣可以通過(guò)IPMI協(xié)議來(lái)統(tǒng)一管理。
IPMI簡(jiǎn)介:
Ipmitool是一種可用在linux系統(tǒng)下的命令行方式的ipmi平臺(tái)管理工具,它支持ipmi 1.5規(guī)范(最新的規(guī)范為ipmi2.0),通過(guò)它可以實(shí)現(xiàn)獲取傳感器的信息、顯示系統(tǒng)日志內(nèi)容、網(wǎng)絡(luò)遠(yuǎn)程開關(guān)機(jī)等功能。
Ipmitool有兩種使用方式:
安裝IPMI
Zabbix自帶IPMI
1 2 | yum install OpenIPMI ipmitool systemctl start ipmi |
安裝ipmitool管理工具:
詳細(xì)安裝配置請(qǐng)參考網(wǎng)站:
https://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html
建議通過(guò)以上IPMI網(wǎng)址安裝配置。
通過(guò)SNMP來(lái)管理:
基于SNMP監(jiān)控
安裝略
使用方法
查看cpu負(fù)載
1 2 3 4 5 6 | snmpget -v2c -c admin 192.168.56.11 .1.3.6.1.4.1.2021.10.1.3.1 UCD-SNMP-MIB::laLoad.1 = STRING: 0.00 snmpwalk -v2c -c admin 192.168.56.11 .1.3.6.1.4.1.2021.10.1.3 UCD-SNMP-MIB::laLoad.1 = STRING: 0.00 UCD-SNMP-MIB::laLoad.2 = STRING: 0.01 UCD-SNMP-MIB::laLoad.3 = STRING: 0.05 |
監(jiān)控寶 SNMP安裝:(環(huán)境CentOS 7 )
1. CentOS SNMP安裝:
安裝net-snmp
1 | yum install net-snmp net-snmp-devel net-snmp-utils |
說(shuō)明:net-snmp-devel是為了使用net-snmp-config, net-snmp-utils是為了使用snmpwalk。
配置 Net-SNMP
CentOS下的net-snmp無(wú)法在selinux環(huán)境下正常使用v3。 如果您想使用snmp v3,請(qǐng)先禁用selinux。
net-snmp-config --create-snmpv3-user -ro -A snmp@jiankongbao -a MD5 jiankongbao
以上命令,創(chuàng)建一個(gè)snmpv3用戶,只讀,使用MD5,用戶名為jiankongbao,密碼為snmp@jiankongbao。
注意:運(yùn)行之前請(qǐng)先停用net-snmp服務(wù)。
停止snmpd服務(wù)
1 | service snmpd stop |
運(yùn)行Net-SNMP
運(yùn)行 Net-SNMP 服務(wù)的方法比較簡(jiǎn)單,不過(guò)Net-SNMP服務(wù)的名字是snmpd
1 | service snmpd start |
加入開機(jī)自啟動(dòng)運(yùn)行服務(wù)列表:
1 | chkconfig snmpd on |
檢測(cè) Net-SNMP
可以使用 snmpwalk 來(lái)檢測(cè)snmp服務(wù)是否正常開啟。
1 | snmpwalk - v 3 -u jiankongbao -a MD5 -A "snmp@jiankongbao" -l authNoPriv 127.0.0.1 sysDescr |
如果一切正常,就會(huì)返回正常結(jié)果。
配置 防火墻
Net-SNMP 使用 udp 協(xié)議,161端口。
可以實(shí)現(xiàn)對(duì)mysql監(jiān)控、Apache監(jiān)控、Lighttpd監(jiān)控、Nginx監(jiān)控等等。
例如:
mysql監(jiān)控:
先創(chuàng)建mysql的權(quán)限,需要在被監(jiān)控的mysql服務(wù)器上為監(jiān)控寶創(chuàng)建一個(gè)專用的mysql用戶,這樣做的好處是:
與您的其它MySQL用戶進(jìn)行有效隔離,獨(dú)立管理。
對(duì)該用戶進(jìn)行受限管理,不需要給予任何MySQL權(quán)限。
指定監(jiān)控寶的訪問(wèn)IP地址,阻止其它非法訪問(wèn)。
操作非常簡(jiǎn)單,在MySQL中操作如下:
1 2 3 | CREATE USER 'jiankongbao' @ '60.195.252.106' IDENTIFIED BY 'your_password' ; CREATE USER 'jiankongbao' @ '60.195.252.108' IDENTIFIED BY 'your_password' ; # CREATE USER 'jiankongbao'@'60.195.249.83' IDENTIFIED BY 'your_password'; |
注意:防火墻安全。在MySQL或者防火墻中指定授權(quán)IP地址的時(shí)候,請(qǐng)只開放我們指定的IP地址,而不要直接開放整個(gè)C類網(wǎng)段,比如60.195.252.0/24,因?yàn)樵摼W(wǎng)段中其它服務(wù)器不在我們的可控范圍內(nèi)。
Apache 監(jiān)控:
需要開啟status模塊,修改httpd.conf文件。
添加如下:
1 2 3 4 5 6 7 8 | ExtendedStatus On <Location /server-status > SetHandler server-status Order deny,allow Deny from all Allow from 60.195.252.106 60.195.252.108 # Allow from 60.195.249.83 < /Location > |
也可以設(shè)置受限訪問(wèn)設(shè)置:在配置文件中,修改<location /server-status>一行。
Lighttpd 監(jiān)控
Lighttpd的狀態(tài)監(jiān)控依賴于mod_status模塊,幸運(yùn)的是,Lighttpd缺省已經(jīng)內(nèi)置了mod_status模塊,我們要做的就是打開配置文件lighttpd.conf,開啟這個(gè)模塊,也就是刪除模塊前邊的“#”注釋符,比如:
1 2 3 4 5 6 7 8 9 10 | server.modules = ( # "mod_rewrite", # "mod_redirect", # "mod_alias", "mod_access" , # "mod_trigger_b4_dl", # "mod_auth", "mod_status" , "mod_fastcgi" , "mod_accesslog" ) |
然后,在lighttpd.conf中找到以下部分:
1 2 | #### status module status.status-url = "/server-status" |
默認(rèn)情況下以上語(yǔ)句是被注釋的,同樣,刪掉注釋符,保存配置文件,重啟lighttpd。
Nginx監(jiān)控:
默認(rèn)情況下不包含狀態(tài)stub_status,所以編譯時(shí)添加參數(shù),然后再nginx.conf中開啟狀態(tài)頁(yè)面。
Windows SNMP安裝:
http://blog.jiankongbao.com/?p=185
詳細(xì)請(qǐng)參考
http://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:%E5%AE%89%E5%85%A8%E6%8C%87%E5%BC%95
系統(tǒng)監(jiān)控:
CPU:
進(jìn)程:每一個(gè)進(jìn)程,至少有一個(gè)線程。
每個(gè)進(jìn)程可以有多個(gè)線程。
(單CPU單核),進(jìn)程的內(nèi)存空間是共享的,每個(gè)線程可以使用這些共享。提供協(xié)調(diào) 機(jī)制,防止進(jìn)程之間和線程之間產(chǎn)生沖突,另一方面允許進(jìn)程之間和線程之間共享資源。
在linux系統(tǒng)中用top命令查看到用戶態(tài)和內(nèi)核態(tài),為什么會(huì)有用戶態(tài)和內(nèi)核態(tài)?
0為內(nèi)核態(tài)
3為用戶態(tài)
CPU監(jiān)控指標(biāo):中斷/使用率/cpu負(fù)載/上下文切換/僵死進(jìn)程的監(jiān)控、最大進(jìn)程的運(yùn)行 數(shù)量、
Top uptime vmstat mpstat lscpu
CPU負(fù)載:?jiǎn)挝粫r(shí)間內(nèi)運(yùn)行隊(duì)列中就緒等待的進(jìn)程數(shù)平均值。
內(nèi)存:
虛擬內(nèi)存(linux管理的是虛擬內(nèi)存)、swap、物理內(nèi)存,linux管理虛擬內(nèi)存
內(nèi)存是分頁(yè)的,內(nèi)存頁(yè)默認(rèn)每頁(yè)是4K
Free –m查看內(nèi)存時(shí),剩余內(nèi)存需要查看available列
1 2 3 | total used free shared buff /cache available Mem: 977 102 514 6 360 714 Swap: 2047 0 2047 |
優(yōu)化內(nèi)存
1 2 | echo "0" > /proc/sys/vm/swappiness cat /sys/block/sda/queue/scheduler |
IO:
Iftop -n 不解析域名 -i 指定網(wǎng)卡名 –P 顯示端口名
1 2 | iftop -i eth0 -F 192.168.56.0 /24 |
Nethogs
Iotop
負(fù)載均衡器一定要監(jiān)控tcp狀態(tài)
以下是鏈接以及工具
1 2 3 4 5 6 7 8 | http: //www .ruanyifeng.com /blog/2013/04/processes_and_threads .html http: //os .51cto.com /art/201012/240476 .htm http: //www .cnblogs.com /cutepig/p/3403711 .html http: //elf8848 .iteye.com /blog/2089055 yum -y install nethogs yum –y install iotop yum –y install iftop yum –y install sysstat |
網(wǎng)絡(luò)監(jiān)控:
檢測(cè)工具:
http://ping.chinaz.com/
開源工具:SmokePing 支持分布式
zabbix部署
1. 什么是zabbix
Zabbix是一個(gè)分布式開源的監(jiān)控系統(tǒng),支持多種采集方法,使它幾乎可以采集和處理所有類型的監(jiān)控?cái)?shù)據(jù);靈活的報(bào)警機(jī)制,可以實(shí)現(xiàn)各種的自定義報(bào)警策略,強(qiáng)大的拓展性,可以自定義監(jiān)控項(xiàng)、圖形、模板,還支持自動(dòng)注冊(cè)和自動(dòng)發(fā)現(xiàn),使它可以快速構(gòu)建一套大型的監(jiān)控系統(tǒng),還有豐富的API接口。
其他監(jiān)控系統(tǒng)cacti、nagios、MangeEngine_ApplicationsManager,lepus,smokeping,piwiki等選zabbix的理由:簡(jiǎn)單、高效、靈活
安裝zabbix前需準(zhǔn)備環(huán)境:
時(shí)間同步:
1 | yum -y install ntpdate |
設(shè)置計(jì)劃任務(wù):crontab -e
1 | echo '* * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >> /var/spool/cron/root |
查看計(jì)劃任務(wù):
crontab -l
1. 設(shè)置主機(jī)名解析
1 2 3 4 | cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.152.142 zabbix-server |
2.安裝 EPEL 倉(cāng)庫(kù)和常用命令
1 2 3 | rpm -ivh http: //mirrors .aliyun.com /epel/epel-release-latest-7 .noarch.rpm yum install -y net-tools vim lrzsz tree screen lsof tcpdump |
注意:如果epel源不能使用,請(qǐng)自行切換其他yum源,本次安裝zabbix-server不需要網(wǎng)絡(luò),但是,由于選擇的是基礎(chǔ)環(huán)境安裝,需要安裝的工具包。
5.更新系統(tǒng)并重啟
1 | yum update -y && reboot |
安裝部署zabbix 3.0 LTS
Zabbix 3.0的安裝
軟件版本要求:
http 1.3.12
Php 5.4.0(不支持php7.0)
Mysql 5.0.3
Zabbix 3.0版本不支持php v7版本。入選用php v7 選擇使用zabbix 3.2
安裝YUM源。
1 | [root@localhost Desktop] # rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm |
在/etc/yum.repo下形成一個(gè)zabbix.repo文件
1 2 3 4 5 6 7 8 9 10 11 12 | [root@localhost ~] # ll /etc/yum.repos.d/ total 40 -rw-r--r--. 1 root root 1664 Nov 30 02:12 CentOS-Base.repo -rw-r--r--. 1 root root 1309 Nov 30 02:12 CentOS-CR.repo -rw-r--r--. 1 root root 649 Nov 30 02:12 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 314 Nov 30 02:12 CentOS-fasttrack.repo -rw-r--r--. 1 root root 630 Nov 30 02:12 CentOS-Media.repo -rw-r--r--. 1 root root 1331 Nov 30 02:12 CentOS-Sources.repo -rw-r--r--. 1 root root 2893 Nov 30 02:12 CentOS-Vault.repo -rw-r--r--. 1 root root 957 Dec 28 01:37 epel.repo -rw-r--r--. 1 root root 1056 Dec 28 01:37 epel-testing.repo -rw-r--r--. 1 root root 401 Feb 15 2016 zabbix.repo |
打開zabbix.repo文件yum源是指向國(guó)外的官網(wǎng)的,為了訪問(wèn)方便,建議把yum源地址改為阿里云的源
修改yum源指向阿里源:
1 2 | baseurl=http: //mirrors .aliyun.com /zabbix/zabbix/3 .0 /rhel/7/ $basearch/ baseurl=http: //mirrors .aliyun.com /zabbix/non-supported/rhel/7/ $basearch/ |
查看zabbix安裝包:
yum list | grep zabbix
安裝zabbix包
1 | yum -y install zabbix-server-mysql zabbix-web-mysql |
安裝數(shù)據(jù)庫(kù):
1 | yum -y install mariadb mariadb-server |
啟動(dòng)mariadb服務(wù)并設(shè)置開機(jī)自啟動(dòng)。
1 2 | systemctl enable mariadb.service systemctl start mariadb.service |
要想使用補(bǔ)全命令可以安裝epel源的包。
1 | yum install bash -comp* -y |
初始化數(shù)據(jù)庫(kù):
1 | mysql_secure_installation |
設(shè)置數(shù)據(jù)庫(kù)密碼:
1 | mysqladmin -u root password |
進(jìn)入數(shù)據(jù)庫(kù):
1 | mysql -uroot -p |
創(chuàng)建數(shù)據(jù)庫(kù),并設(shè)置字符集為Utf-8
1 | create database zabbix character set utf8 collate utf8_bin; |
授權(quán)數(shù)據(jù)庫(kù):
1 | grant all privileges on zabbix.* to zabbix@ 'localhost' identified by '123.Com' ; |
打開導(dǎo)入數(shù)據(jù)庫(kù)并驗(yàn)證zabbix數(shù)據(jù)庫(kù):
1 | zcat /usr/share/doc/zabbix-server-mysql-3 .0.8 /create .sql.gz|mysql -uzabbix -p123.Com zabbix |
注意:zcat是一個(gè)查看命令。
設(shè)置web界面:
1 | vim /etc/httpd/conf/httpd .conf |
更改ServerName
啟動(dòng)web服務(wù):
1 2 | systemctl restart httpd.service systemctl enable httpd.service |
配置zabbix-server,設(shè)置配置文件中添加密碼:
vim /etc/zabbix/zabbix_server.conf
啟動(dòng)zabbix-server服務(wù):
systemctl start zabbix-server.service
注意:
Zabbix端口號(hào)10051
Zabbix的web配置文件默認(rèn)安裝再/etc/httpd/conf.d/
連接php的配置文件默認(rèn)安裝再/etc/httpd/conf.d/
關(guān)閉NetworkManager和防火墻:
1 2 | systemctl disable firewalld systemctl disable NetworkManager |
4. 關(guān)閉并確認(rèn) SELinux 處于關(guān)閉狀態(tài)
1 2 3 | vim /etc/sysconfig/selinuxSELINUX =disabled #修改為 disable setenforce 0 getenforce |
注意:不注意防火墻或者NetworkManager和selinux會(huì)導(dǎo)致zabbix啟動(dòng)了卻web界面里還是顯示zabbix 未啟動(dòng)。
進(jìn)入web界面安裝zabbix
輸入http://zabbix服務(wù)器地址/zabbix/setup.php進(jìn)入,根據(jù)向?qū)О惭b。更改時(shí)區(qū)
修改/etc/httpd/conf.d/zabbix.conf中的一行:
php_value date.timezone Asia/Shanghai把這一行的注釋去掉地點(diǎn)改為上海。
Asia/Shanghai
更改完畢后,重啟httpd.service服務(wù)。
這是安裝zabbix的向?qū)О惭b的第一步:
這是安裝zabbix的向?qū)О惭b的第二步
可以看到時(shí)間地點(diǎn)已經(jīng)更改成功了!
下一步設(shè)置連接數(shù)據(jù)庫(kù)的用戶密碼等:
下一步設(shè)置命名:
下一步:
安裝zabbix:
輸入用戶密碼,進(jìn)入zabbix界面。
默認(rèn)的用戶:Admin 密碼:zabbix
進(jìn)入了zabbix的界面:
由于只安裝了zabbix,并沒(méi)有配置zabbix配置
修改zabbix配置文件:
1 | vim /etc/zabbix/zabbix_server .conf |
修改配置文件中的DBPassword=這一行并把注釋去掉!
重啟zabbix-server服務(wù)并設(shè)置開機(jī)自啟動(dòng)
下面再看一下zabbix界面NO變成了YES.
顯示zabbix已經(jīng)正常啟動(dòng)!
如果zabbix到達(dá)瓶頸可以進(jìn)行拆分。
/etc/zabbix/web/zabbix.conf.ph在這個(gè)文件中配置拆分。
要想讓zabbix監(jiān)控自己,需要安裝一個(gè)zabbix-agent 可以監(jiān)控自己本身。依賴openssl
修改zabbix-agent配置文件
1 | vim /etc/zabbix/zabbix_agentd .conf |
可以配置主動(dòng)和被動(dòng)
啟動(dòng)zabbix-agent服務(wù):
systemctl start zabbix-agent
可以看到如下zabbix server主機(jī)hosts
點(diǎn)擊紅色位置啟用zabbix server
看到已啟動(dòng)!
Zabbix主動(dòng)模式和被動(dòng)模式:
理論:
被動(dòng)模式流程,被動(dòng)模式一定要記得設(shè)置Server = ServerIP
被動(dòng)模式工作流程:
Server 打開一個(gè)TCP連接
Server發(fā)送一個(gè)key 為agent.ping
Agent接受這個(gè)請(qǐng)求,然后響應(yīng)< HEADER >< DATALEN >
Server對(duì)接受到的數(shù)據(jù)進(jìn)行處理
TCP連接關(guān)閉
主動(dòng)模式流程:主動(dòng)模式一定要記得設(shè)置ServerActive=ServerIP
Agent向Server建立一個(gè)TCP連接
Agent請(qǐng)求需要檢測(cè)的數(shù)據(jù)列表
Server響應(yīng)Agent,發(fā)送一個(gè)Items列表
Agent允許響應(yīng)
TCP連接完成本次會(huì)話關(guān)閉
Agent開始周期性地收集數(shù)據(jù)
安裝第二臺(tái)agent:
安裝agent服務(wù):
1 | rpm -ivh zabbix-agent-3.0.5-1.el7.x86_64.rpm |
啟動(dòng)并設(shè)置開機(jī)自啟
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
Zabbix添加監(jiān)控主機(jī):
在configuration中選擇hosts:
如果Groups沒(méi)有可以NEW一個(gè),然后ip地址填寫agent的ip,添加完畢后不要add,
還需要添加Templates模板之后再按add(在這里選擇Template OS Linux模板)
截圖如下:
可以看見(jiàn)host主機(jī)添加成功:
發(fā)現(xiàn)添加的主機(jī)ZBX為紅色,報(bào)錯(cuò)如下:
Received empty response from Zabbix Agent at [192.168.0.106]. Assuming that agent dropped connection because of access permissions.
解決辦法:修改agent的配置文件:
1 | vim /etc/zabbix/zabbix_agentd .conf |
修改為Server=(zabbix server的ip地址)
Server=192.168.152.142
重啟zabbix-agent服務(wù):
1 | systemctl restart zabbix-agent.service |
可以看到如下圖紅色變?yōu)榱司G色,問(wèn)題解決了!
使用zabbix-get:
安裝zabbix-get服務(wù):
1 | yum install -y zabbix-get |
測(cè)試方法:
例如:
1 | zabbix_get -s linux-node2.example.com -k agent. ping |
只能取zabbix agent類型
查看本機(jī)有多少內(nèi)置key
1 | zabbix_agentd -p |
zabbix網(wǎng)址:
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: