1. 程式人生 > 實用技巧 >Zabbix4.4從入門到精通

Zabbix4.4從入門到精通

1.zabbix監控的相關概念

1.為什麼要監控

在需要的時刻,提前提醒我們伺服器出問題了

當出問題之後,可以找到問題的根源

網站/伺服器 的可用性

網站可用性介紹

在軟體系統的高可靠性(也稱為可用性,英文描述為HA,High Available)裡有個衡量其可靠性的標準——X個9,這個X是代表數字3~5。X個9表示在軟體系統1年時間的使用過程中,系統可以正常使用時間與總時間(1年)之比,我們通過下面的計算來感受下X個9在不同級別的可靠性差異。

 1個9:(1-90%)*365=36.5天,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是36.5天
 2個9:(1-99%)*365=3
.65天 , 表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是3.65天 3個9:(1-99.9%)*365*24=8.76小時,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是8.76小時。 4個9:(1-99.99%)*365*24=0.876小時=52.6分鐘,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是52.6分鐘。 5個9:(1-99.999%)*365*24*60=5.26分鐘,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是5.26分鐘。 6個9:(1-99.9999%)*365*24*60*60=31秒, 示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是31秒

2.監控什麼東西

監控一切需要監控的東西,只要能夠想到,能夠用命令實現的都能用來監控

監控範疇

3.怎麼來監控

遠端管理伺服器

如果想遠端管理伺服器就有遠端管理卡,比如Dell idRAC,HP ILO,IBM IMM

監控硬體

檢視硬體的溫度/風扇轉速,電腦有魯大師,伺服器就有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

檢視CPU相關

lscpu、uptime、top、htop vmstat mpstat

其中htop需要安裝,安裝依賴與epel源。

[znix@clsn ~]$lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85
Model name:            Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
Stepping:              4
CPU MHz:               2494.150
BogoMIPS:              4988.30
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              1024K
L3 cache:              33792K
NUMA node0 CPU(s):     0

記憶體使用情況

[znix@clsn ~]$free -h
             total       used       free     shared    buffers     cached
Mem:          996M       867M       128M       712K       145M       450M
-/+ buffers/cache:       271M       725M
Swap:         1.0G         0B       1.0G

磁碟的使用情況

df、dd、iotop

[znix@clsn ~]$df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   24G   15G  62% /
tmpfs           499M   20K  499M   1% /dev/shm
/dev/vdb1        20G  4.4G   15G  24% /data

監控網路

iftop nethogs

iftop   監控主機間流量  -i 指定監控網絡卡
nethogs 監控程序流量

4.監控工具總覽

mrtg 流量監控出圖

nagios 監控

cacti  流量監控出圖

zabbix 監控+出圖

5.zabbix介紹

Zabbix 是由 Alexei Vladishev 開發的一種網路監視、管理系統,基於 Server-Client 架構。可用於監視各種網路服務、伺服器和網路機器等狀態。

通過上面我們總結的怎麼監控,發現一個問題,就是由於硬體的不同,導致我們無法使用統一的方法去監控他們,這個時候,就需要監控程式有一定的通用性,或者說,監控程式需要能夠與多種硬體裝置通訊,才能滿足我們的監控需求,舉個例子:如果被監控的物件是一臺安裝了linux作業系統的伺服器,那麼我們可以通過ssh或者telnet這種遠端工具與被監控物件建立起通訊的通道,可是如果被監控的物件是一臺安裝了其他作業系統的伺服器呢,更甚之,被監控的物件並不是伺服器,而只是一臺交換機或者路由器呢,所以,zabbix如果想要能夠全面的監控這些物件,則需要能夠通過各種方法與它們進行通訊

zabbix支援的通訊方式:

agent:通過專用的代理程式進行監控,與常見的master/agent模型類似,如果被監控物件支援對應的agent,推薦首選這種方式。

ssh/telnet:通過遠端控制協議進行通訊,比如ssh或者telnet。

SNMP:通過SNMP協議與被監控物件進行通訊,SNMP協議的全稱為Simple Network Management Protocol ,被譯為 "簡單網路管理協議",通常來說,我們無法在路由器、
交換機這種硬體上安裝agent,但是這些硬體往往都支援SNMP協議,SNMP是一種比較久遠的、通行的協議,大部分網路裝置都支援這種協議,其實SNMP協議的工作方式也可以理
解為master/agent的工作方式,只不過是在這些裝置中內建了SNMP的agent而已,所以,大部分網路裝置都支援這種協議。 IPMI:通過IPMI介面進行監控,我們可以通過標準的IPMI硬體介面,監控被監控物件的物理特徵,比如電壓,溫度,風扇狀態,電源狀態等。 JMX:通過JMX進行監控,JMX(Java Management Extensions,即Java管理擴充套件),監控JVM虛擬機器時,使用這種方法也是非常不錯的選擇。

監控常用的方式,zabbix agent

剛才提到了zabbix agent,一般情況下,我們將zabbix agent部署到被監控主機上,由agent採集資料,報告給負責監控的中心主機,中心主機也就是master/agent模型中的master,負責監控的中心主機被稱為zabbix server,zabbix server將從agent端接收到的資訊儲存於zabbix的資料庫中,我們把zabbix的資料庫端稱為zabbix database, 如果管理員需要檢視各種監控資訊,則需要zabbix的GUI,zabbix的GUI是一種Web GUI(圖形化介面或圖形使用者介面),我們稱之為zabbix web,zabbix web是使用php編寫的,所以,如果想要使用zabbix web展示相關監控資訊,需要依賴LAMP環境,不管是zabbix server ,或是zabbix web,他們都需要連線到zabbix database獲取相關資料,這樣說可能不容易理解,對比下圖理解上述概念,就容易許多

zabbix proxy的講解

當監控規模變得龐大時,我們可能有成千上萬臺裝置需要監控,這時我們是否需要部署多套zabbix系統進行監控呢?如果部署多套zabbix監控系統,那麼監控壓力將會被分攤,但是,這些監控的物件將會被儘量平均的分配到不同的監控系統中,這個時候,我們就無法通過統一的監控入口,去監控這些物件了,雖然分攤了監控壓力,但是也增加了監控工作的複雜度,那麼,我們到底該不該建立多套zabbix監控系統從而分攤巨大的監控壓力呢?其實,zabbix天生就有處理這種問題的能力,因為zabbix支援分散式監控,我們可以把成千上萬臺的被監控物件分成不同的區域,每個區域中設定一臺代理主機,區域內的每個被監控物件的資訊被agent採集,提交給代理主機,在這個區域內,代理主機的作用就好比zabbix server,我們稱這些代理主機為zabbix proxy,zabbix proxy再將收集到的資訊統一提交給真正的zabbix server處理,這樣,zabbix proxy分攤了zabbix server的壓力,同時,我們還能夠通過統一的監控入口,監控所有的物件,當監控規模龐大到需要使用zabbix proxy時,zabbix的架構如下圖,我們可以對比下圖,理解上述描述。

zabbix核心元件總結

zabbix agent:部署在被監控主機上,負責被監控主機的資料,並將資料傳送給zabbix server。

zabbix server:負責接收agent傳送的報告資訊,並且負責組織配置資訊、統計資訊、操作資料等。

zabbix database:用於儲存所有zabbix的配置資訊、監控資料的資料庫。

zabbix web:zabbix的web介面,管理員通過web介面管理zabbix配置以及檢視zabbix相關監控資訊,可以單獨部署在獨立的伺服器上。

zabbix proxy:可選元件,用於分散式監控環境中,zabbix proxy代表server端,完成區域性區域內的資訊收集,最終統一發往server端。

zabbix工作模式

我們知道,agent端會將採集完的資料主動傳送給server端,這種模式我們稱之為主動模式,即對於agent端來說是主動的。

其實,agent端也可以不主動傳送資料,而是等待server過來拉取資料,這種模式我們稱之為被動模式。

聰明如你一定已經明白,不管是主動模式還是被動模式,都是對於agent端來說的,而且,主動模式與被動模式可以同時存在,並不衝突。

管理員可以在agent端使用一個名為zabbix_sender的工具,測試是否能夠向server端傳送資料。

管理員可以在server端使用一個名為zabbix_get的工具,測試是否能夠從agent端拉取資料。

2.安裝zabbix

1.環境檢查

[root@centos7 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@centos7 ~]# uname -r
3.10.0-957.el7.x86_64
#為了不必要的網路問題,我們這裡直接關閉selinux和防火牆,如果網路玩的比較溜的話,可以不關。
[root@centos7
~]# vim /etc/selinux/config #將SELINUX=enforcig改為SELINUX=disable #檢測selinux是否關閉,Disabled為關閉。
[root@centos7
~]# getenforce Disabled #關閉防火牆
[root@centos7
~]# systemctl stop firewalld #檢查防火牆是否關閉,出現下面標註的地方,則表示已經關閉
[root@centos7
~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sun 2020-09-20 23:44:02 CST; 3s ago Docs: man:firewalld(1) Process: 3267 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS) Main PID: 3267 (code=exited, status=0/SUCCESS)

2.安裝方式的選擇

編譯安裝 (服務較多,環境複雜)

yum安裝(乾淨環境)

我們這裡選擇yum的方式進行介紹,後面有時間在進行編譯安裝介紹

3.配置yum源

官方yum源的配置

#安裝軟體倉庫配置包,這個包包含了 yum(軟體包管理器)的配置檔案。
[root@centos7 yum.repos.d]# rpm -ivh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm [root@centos7 yum.repos.d]# cd [root@centos7 ~]# cd /etc/yum.repos.d/ [root@centos7 yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo zabbix.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo #這裡我們看到yum源已經生成了
[root@centos7
yum.repos.d]# cat zabbix.repo [zabbix] name=Zabbix Official Repository - $basearch baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 [zabbix-debuginfo] name=Zabbix Official Repository debuginfo - $basearch baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/debuginfo/ enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 gpgcheck=1 [zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/ enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX gpgcheck=1