一、監控概述:
·初級:
·1.識別監控對象 (分級)
·2.理解監控對象 (理論基礎)
·3.細分監控對象的指標
·4.確定告警的基準線
·預中級:
1.工具化和監控分離
2.監控對象的分類:
2.1 硬件監控 (方法:機房巡檢、IPMI、SNMP簡單網絡管理協議、)
2.2 系統監控 (對象:cpu、內存、IO【磁盤、網絡】)
2.3 服務監控 (對象:分類服務)
2.4 日誌監控 (方法:Elastic Stack)
2.5 網絡監控 (方法: 第三方、Smokeping)
2.6 APM應用性能管理 (工具:pinpoint APM)
2.7 流量監控(工具:Piwik、xx統計、xx分析)
2.8 其他監控 (APP監控、安全監控、業務監控、輿論監控、xx監控等)
3.掌握一個監控工具。例如:zabbix
·中級:
0.標準化監控(標準化的腳本、模板、....)
1.分佈式監控(主動、被動、分佈式)
2.自動化監控(自動發現、主動註冊【Agent主動註冊、Server主動添加(API)】)
3.性能優化(數據採集、數據存儲、數據查詢)
4.二次開發(定製報表、API調用、)
·進階:(精通到放棄)
1.告警閾值動態化
2.智能告警:【1.告警去重 2.依賴】
3.故障自愈(事件驅動、主動控制)
4.大規模告警
硬件監控:
1.機房巡檢
2.通過網絡來巡檢
例如:DELL 通過iDRAC口監控
HP 通過ILO
IBM 通過IMM
由於每個廠商不一樣可以通過IPMI協議來統一管理。
IPMI簡介:
Ipmitool是一種可用在linux系統下的命令行方式的ipmi平臺管理工具,它支持ipmi 1.5規範(最新的規範爲ipmi2.0),通過它可以實現獲取傳感器的信息、顯示系統日誌內容、網絡遠程開關機等功能。
Ipmitool有兩種使用方式:
安裝IPMI
Zabbix自帶IPMI
安裝ipmitool管理工具:
詳細安裝配置請參考網站:
https://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html
建議通過以上IPMI網址安裝配置。
通過SNMP來管理:
基於SNMP監控
安裝略
使用方法
查看cpu負載
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
監控寶 SNMP安裝:(環境CentOS 7 )
1. CentOS SNMP安裝:
安裝net-snmp
yum install net-snmp net-snmp-devel net-snmp-utils
說明:net-snmp-devel是爲了使用net-snmp-config, net-snmp-utils是爲了使用snmpwalk。
配置 Net-SNMP
CentOS下的net-snmp無法在selinux環境下正常使用v3。 如果您想使用snmp v3,請先禁用selinux。
net-snmp-config --create-snmpv3-user -ro -A snmp@jiankongbao -a MD5 jiankongbao
以上命令,創建一個snmpv3用戶,只讀,使用MD5,用戶名爲jiankongbao,密碼爲snmp@jiankongbao。
注意:運行之前請先停用net-snmp服務。
停止snmpd服務
service snmpd stop
運行Net-SNMP
運行 Net-SNMP 服務的方法比較簡單,不過Net-SNMP服務的名字是snmpd
service snmpd start
加入開機自啓動運行服務列表:
chkconfig snmpd on
檢測 Net-SNMP
可以使用 snmpwalk 來檢測snmp服務是否正常開啓。
snmpwalk -v 3 -u jiankongbao -a MD5 -A "snmp@jiankongbao" -l authNoPriv 127.0.0.1 sysDescr
如果一切正常,就會返回正常結果。
配置 防火牆
Net-SNMP 使用 udp 協議,161端口。
可以實現對mysql監控、Apache監控、Lighttpd監控、Nginx監控等等。
例如:
mysql監控:
先創建mysql的權限,需要在被監控的mysql服務器上爲監控寶創建一個專用的mysql用戶,這樣做的好處是:
與您的其它MySQL用戶進行有效隔離,獨立管理。
對該用戶進行受限管理,不需要給予任何MySQL權限。
指定監控寶的訪問IP地址,阻止其它非法訪問。
操作非常簡單,在MySQL中操作如下:
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或者防火牆中指定授權IP地址的時候,請只開放我們指定的IP地址,而不要直接開放整個C類網段,比如60.195.252.0/24,因爲該網段中其它服務器不在我們的可控範圍內。
Apache 監控:
需要開啓status模塊,修改httpd.conf文件。
添加如下:
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>
也可以設置受限訪問設置:在配置文件中,修改<location /server-status>一行。
Lighttpd 監控
Lighttpd的狀態監控依賴於mod_status模塊,幸運的是,Lighttpd缺省已經內置了mod_status模塊,我們要做的就是打開配置文件lighttpd.conf,開啓這個模塊,也就是刪除模塊前邊的“#”註釋符,比如:
server.modules = (
# "mod_rewrite",
# "mod_redirect",
# "mod_alias",
"mod_access",
# "mod_trigger_b4_dl",
# "mod_auth",
"mod_status",
"mod_fastcgi",
"mod_accesslog" )
然後,在lighttpd.conf中找到以下部分:
#### status module
status.status-url = "/server-status"
默認情況下以上語句是被註釋的,同樣,刪掉註釋符,保存配置文件,重啓lighttpd。
Nginx監控:
默認情況下不包含狀態stub_status,所以編譯時添加參數,然後再nginx.conf中開啓狀態頁面。
Windows SNMP安裝:
http://blog.jiankongbao.com/?p=185
詳細請參考
http://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:%E5%AE%89%E5%85%A8%E6%8C%87%E5%BC%95
系統監控:
CPU:
進程:每一個進程,至少有一個線程。
每個進程可以有多個線程。
(單CPU單核),進程的內存空間是共享的,每個線程可以使用這些共享。提供協調機制,防止進程之間和線程之間產生衝突,另一方面允許進程之間和線程之間共享資源。
在linux系統中用top命令查看到用戶態和內核態,爲什麼會有用戶態和內核態?
0爲內核態
3爲用戶態
CPU監控指標:中斷/使用率/cpu負載/上下文切換/僵死進程的監控、最大進程的運行數量、
Top uptime vmstat mpstat lscpu
CPU負載:單位時間內運行隊列中就緒等待的進程數平均值。
內存:
虛擬內存(linux管理的是虛擬內存)、swap、物理內存,linux管理虛擬內存
內存是分頁的,內存頁默認每頁是4K
Free –m查看內存時,剩餘內存需要查看available列
total used free shared buff/cache available
Mem: 977 102 514 6 360 714
Swap: 2047 0 2047
優化內存
echo "0" > /proc/sys/vm/swappiness
cat /sys/block/sda/queue/scheduler
IO:
Iftop -n 不解析域名 -i 指定網卡名 –P 顯示端口名
i ftop -i eth0 -F 192.168.56.0/24
Nethogs
Iotop
負載均衡器一定要監控tcp狀態
以下是鏈接以及工具
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
網絡監控:
檢測工具:
http://ping.chinaz.com/
開源工具:SmokePing支持分佈式
zabbix部署
1.什麼是zabbix
Zabbix是一個分佈式開源的監控系統,支持多種採集方法,使它幾乎可以採集和處理所有類型的監控數據;靈活的報警機制,可以實現各種的自定義報警策略,強大的拓展性,可以自定義監控項、圖形、模板,還支持自動註冊和自動發現,使它可以快速構建一套大型的監控系統,還有豐富的API接口。
其他監控系統cacti、nagios、MangeEngine_ApplicationsManager,lepus,smokeping,piwiki等選zabbix的理由:簡單、高效、靈活
安裝zabbix前需準備環境:
時間同步:
yum -y install ntpdate
設置計劃任務:crontab -e
echo '* * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root
查看計劃任務:
crontab -l
1.設置主機名解析
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.105 zabbix-server
2.安裝 EPEL 倉庫和常用命令
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源不能使用,請自行切換其他yum源,本次安裝zabbix-server不需要網絡,但是,由於選擇的是基礎環境安裝,需要安裝的工具包。
5.更新系統並重啓
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源。
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下形成一個zabbix.repo文件
打開zabbix.repo文件yum源是指向國外的官網的,爲了訪問方便,建議把yum源地址改爲阿里雲的源
修改yum源指向阿里源:
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包
yum -y install zabbix-server-mysql zabbix-web-mysql
安裝數據庫:
yum -y install mariadb mariadb-server
啓動mariadb服務並設置開機自啓動。
systemctl enable mariadb.service
systemctl start mariadb.service
要想使用補全命令可以安裝epel源的包。
yum install bash-comp* -y
初始化數據庫:
mysql_secure_installation
設置數據庫密碼:
mysqladmin -u root password
進入數據庫:
mysql -uroot -p
創建數據庫,並設置字符集爲Utf-8
create database zabbix character set utf8 collate utf8_bin;
授權數據庫:
grant all privileges on zabbix.* to zabbix@'localhost' identified by '123.Com';
打開導入數據庫並驗證zabbix數據庫:
zcat /usr/share/doc/zabbix-server-mysql-3.0.8/create.sql.gz|mysql -uzabbix -p123.Com zabbix
注意:zcat是一個查看命令。
設置web界面:
vim /etc/httpd/conf/httpd.conf
更改ServerName
啓動web服務:
systemctl restart httpd.service
systemctl enable httpd.service
配置zabbix-server,設置配置文件中添加密碼:
vim /etc/zabbix/zabbix_server.conf
啓動zabbix-server服務:
systemctl start zabbix-server.service
注意:
Zabbix端口號10051
Zabbix的web配置文件默認安裝再/etc/httpd/conf.d/
連接php的配置文件默認安裝再/etc/httpd/conf.d/
關閉NetworkManager和防火牆:
systemctl disable firewalld
systemctl disable NetworkManager
4.關閉並確認 SELinux 處於關閉狀態
vim /etc/sysconfig/selinux
SELINUX=disabled #修改爲 disable
setenforce 0
getenforce
注意:不注意防火牆或者NetworkManager和selinux會導致zabbix啓動了卻web界面裏還是顯示zabbix 未啓動。
進入web界面安裝zabbix
輸入http://zabbix服務器地址/zabbix/setup.php進入,根據嚮導安裝。更改時區
修改/etc/httpd/conf.d/zabbix.conf中的一行:
php_value date.timezone Asia/Shanghai把這一行的註釋去掉地點改爲上海。
Asia/Shanghai
更改完畢後,重啓httpd.service服務。
這是安裝zabbix的嚮導安裝的第一步:
這是安裝zabbix的嚮導安裝的第二步
可以看到時間地點已經更改成功了!
下一步設置連接數據庫的用戶密碼等:
下一步設置命名:
下一步:
安裝zabbix:
輸入用戶密碼,進入zabbix界面。
進入了zabbix的界面:
由於只安裝了zabbix,並沒有配置zabbix配置
修改zabbix配置文件:
vim /etc/zabbix/zabbix_server.conf
修改配置文件中的DBPassword=這一行並把註釋去掉!
重啓zabbix-server服務並設置開機自啓動
下面再看一下zabbix界面NO變成了YES.
顯示zabbix已經正常啓動!
如果zabbix到達瓶頸可以進行拆分。
/etc/zabbix/web/zabbix.conf.ph在這個文件中配置拆分。
要想讓zabbix監控自己,需要安裝一個zabbix-agent 可以監控自己本身。依賴openssl
修改zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
可以配置主動和被動
啓動zabbix-agent服務:
systemctl start zabbix-agent
可以看到如下zabbix server主機hosts
可以看到如下zabbix server主機hosts
看到已啓動!
Zabbix主動模式和被動模式:
理論:
被動模式流程,被動模式一定要記得設置Server = ServerIP
被動模式工作流程:
Server 打開一個TCP連接
Server發送一個key 爲agent.ping
Agent接受這個請求,然後響應< HEADER >< DATALEN >
Server對接受到的數據進行處理
TCP連接關閉
主動模式流程:主動模式一定要記得設置ServerActive=ServerIP
Agent向Server建立一個TCP連接
Agent請求需要檢測的數據列表
Server響應Agent,發送一個Items列表
Agent允許響應
TCP連接完成本次會話關閉
Agent開始週期性地收集數據
安裝第二臺agent:
安裝agent服務:
rpm -ivh zabbix-agent-3.0.5-1.el7.x86_64.rpm
啓動並設置開機自啓
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
Zabbix添加監控主機:
在configuration中選擇hosts:
如果Groups沒有可以NEW一個,然後ip地址填寫agent的ip,添加完畢後不要add,
還需要添加Templates模板之後再按add(在這裏選擇Template OS Linux模板)
截圖如下:
可以看見host主機添加成功:
發現添加的主機ZBX爲紅色,報錯如下:
Received empty response from Zabbix Agent at [192.168.0.106]. Assuming that agent dropped connection because of access permissions.
解決辦法:修改agent的配置文件:
vim /etc/zabbix/zabbix_agentd.conf
修改爲Server=(zabbix server的ip地址)
Server=192.168.0.105
重啓zabbix-agent服務:
systemctl restart zabbix-agent.service
可以看到如下圖紅色變爲了綠色,問題解決了!
使用zabbix-get:
安裝zabbix-get服務:
yum install -y zabbix-get
測試方法:
例如:
zabbix_get -s linux-node2.example.com -k agent.ping
只能取zabbix agent類型
查看本機有多少內置key
zabbix_agentd -p
zabbix簡單的安裝配置及其理論!希望可以幫到大家!後期會爲大家更新zabbix監控各種服務!