您好,登錄后才能下訂單哦!
一、Zabbix相關知識簡介:
1、監控的維度:
監控內容 | 監控方式 |
物理硬件:CPU溫度、主板溫度、風扇轉速、電壓、功率等 | IPMI、機房巡檢 |
操作系統:CPU負載、內存使用率、磁盤使用率、磁盤I/O、網卡流量等 | Linux模板 |
定制開源模板 | |
業務:業務狀態、網頁速度、PV、UV、IP、活躍用戶數、每日成交量等 | 騰訊分析、Matomo等 |
交換機、路由器、UPS等網絡設備 | SNMP |
日志 | ELK、GoAccess、AWStats |
說明:PV、UV、IP名詞解釋
PV:Page View,訪問量,即頁面瀏覽量或點擊量,衡量網站用戶訪問的網頁數量,在一定統計周期內用戶每打開或刷新1個頁面就記錄1次,多次打開或刷新同1頁面則瀏覽量累計。
UV:Unique Visitor,獨立訪客,統計1天內訪問某站點的用戶數(以cookie為依據),訪問網站的1臺電腦客戶端為1個訪客,可以理解成訪問某網站的電腦的數量,網站判斷來訪電腦的身份是通過來訪電腦的cookies實現的,如果更換了IP后但不清除cookies,再訪問相同網站,該網站的統計中UV數是不變的,如果用戶不保存cookies訪問、清除了cookies或更換設備訪問,計數會加1,00:00-24:00內相同的客戶端多次訪問只計為1個訪客。
IP:Internet Protocol,獨立IP數,指1天內多少個獨立的IP瀏覽了頁面,即統計不同的IP瀏覽用戶數量,同一IP不管訪問了幾個頁面,獨立IP數均為1,不同的IP瀏覽頁面,計數會加1,IP是基于用戶廣域網IP地址來區分不同的訪問者的,多個用戶(多個局域網IP)在同1個路由器(同1個廣域網IP)內上網,可能被記錄為1個獨立IP訪問者,如果用戶不斷更換IP,則有可能被多次統計。
2、Zabbix組件:
(1)Zabbix Server:負責接收Zabbix Agent或Zabbix Proxy發送的報告信息,并負責組織配置信息、統計信息及操作數據等。
(2)Zabbix Database:用于存儲所有Zabbix的配置信息及監控數據的數據庫,監控數據包括
a、歷史數據:每次采樣的結果,保存時長相對較短
b、趨勢數據:聚合數據,保存相對較長周期內的數據
(3)Zabbix Web:Zabbix的GUI接口,管理員通過Web界面管理Zabbix配置以及查看Zabbix相關監控信息,可以單獨部署在獨立的服務器上。
(4)Zabbix Agent:部署在被監控主機上,負責收集被監控主機的數據,并發往Zabbix Server或Zabbix Proxy。
(5)Zabbix Proxy:可選組件,用于分布式監控環境,收集局部區域內Zabbix Agent的監控數據,并統一發往Zabbix Server。
說明:一般情況下,將Zabbix Agent部署在被監控主機上采集數據,報告給負責監控的中心主機,中心主機也就是master/agent模型中的master,負責監控的中心主機被稱為Zabbix Server,Zabbix Server將從Zabbix Agent接收到的信息存儲于Zabbix Database中,如果管理員需要查看各種監控信息,則需要使用PHP編寫的Zabbix Web,且依賴于LAMP環境,不管是Zabbix Server,或Zabbix Web,都需要連接到Zabbix Database獲取相關數據。
3、Zabbix常用術語:
(1)host:主機,需要被Zabbix監控的對象,主機必須屬于某個主機組。
(2)host group:主機組,是具有相同屬性、特征、角色的多個主機組成的邏輯單元。
(3)item:監控項,一個特定監控指標的相關數據,這些數據來自于被監控對象,監控項是Zabbix進行數據收集的核心,沒有監控項將沒有數據,相對某監控對象來說,每個監控項都由“key”進行標識。
(4)key:鍵,如果想要獲取監控項對應的數據,則必須通過某個key去獲取,Zabbix中自帶一些key,這些key往往比較通用,通過這些key可以監控CPU、內存、硬盤等常用指標,獲取不同的指標信息,但如果這些自帶的key無法滿足監控需求時,也可以自定義key,通過自定義key執行相應的操作。
(5)trigger:觸發器,一個表達式,用于評估某監控對象的某特定item內所接收到的數據是否在其合理范圍內,即閾值,接收到的數據量達到閾值時,觸發器狀態將從“OK”轉變為“Problem”,當數據量再次回歸到合理范圍時,其狀態將從“Problem”轉換回“OK”。
(6)event:事件,當觸發器的狀態發生改變時,會產生對應的事件,由觸發器的狀態改變而產生的事件被稱為“觸發器事件”,Zabbix中,事件分為觸發器事件、自動發現事件、自動注冊事件和內部事件。
(7)action:動作,指對于特定事件事先定義的處理方法,包含操作(如發送通知)和條件(何時執行操作)。
(8)escalation:報警升級,發送告警或執行遠程命令的自定義方案,如每隔5分鐘發送一次告警,共發送5次等。
(9)media:媒介,發送通知的手段或通道,如Email、Jabber或SMS等。
(10)notification:通知,通過選定的媒介向用戶發送有關某事件的信息。
(11)remote command:遠程命令,預定義的命令,可在被監控主機處于某特定條件下時自動執行。
(12)template:模板,用于快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule,模板可直接鏈接至單個主機。
(13)application:應用,一組item的集合。
(14)web scennario:web場景,用于檢測web站點可用性的一個或多個HTTP請求。
(15)frontend:前端,Zabbix的web接口。
4、Zabbix支持的通信方式:
(1)Agent:通過專用的代理程序進行監控,與常見的master/agent模型類似,如果被監控對象支持對應的Agent,推薦首選此種方式。
(2)SSH/Telnet:通過遠程控制協議進行通信。
(3)SNMP:Simple Network Management Protocol,簡單網絡管理協議,通過SNMP協議與被監控對象進行通信,通常無法在路由器、交換機這種硬件上安裝Agent,但是這些硬件往往都支持SNMP協議,SNMP是一種比較久遠的、通行的協議,大部分網絡設備都支持這種協議,其實SNMP協議的工作方式也可以理解為master/agent的工作方式,只不過是在這些設備中內置了SNMP的Agent而已。
(4)IPMI:Intelligent Platform Management Interface,智能平臺管理接口,通過IPMI接口進行監控,可以通過標準的IPMI硬件接口,監控被監控對象的物理特征,比如電壓、溫度、風扇狀態、電源狀態等。
(5)JMX:Java Management Extensions,Java管理擴展,監控JVM虛擬機時,較常使用此種方式。
5、Zabbix的工作模式:
(1)主動模式:Zabbix Agent會將采集完的數據主動發送給Zabbix Server,可減輕Zabbix Server的壓力。
(2)被動模式:Zabbix Agent不主動發送數據,而是等待Zabbix Server過來拉取數據,默認為被動模式。
說明:不管是主動模式還是被動模式,都是對于Zabbix Agent來說的,主動模式與被動模式可以并存
二、準備工作:
1、Zabbix版本選擇:https://www.zabbix.com/life_cycle_and_release_policy
備注:建議選擇LTS(Long Term Support,長期支持)版本
2、相關網址:
(1)Zabbix下載地址:https://www.zabbix.com/download/
(2)Zabbix 4.0 LTS中文產品手冊:https://www.zabbix.com/documentation/4.0/zh/manual
3、演示環境:
IP | 操作系統 | 主機名 | 角色 |
192.168.0.120 | CentOS ? 7.7 x86_64 | zabbix-server | Zabbix ? Database、Zabbix ? Server、Zabbix ? Web、Zabbix ? Agent |
192.168.0.121 | CentOS ? 7.7 x86_64 | sh-proxy | Zabbix ? Proxy |
192.168.0.122 | CentOS ? 7.7 x86_64 | node-122 | Zabbix ? Agent |
192.168.0.130 | Windows ? Server 2012 R2 | node-130 | Zabbix ? Agent |
4、所有CentOS節點執行如下操作:
(1)關閉SELinux和firewalld
(2)配置服務器時間同步
(3)配置主機名
(4)配置hosts文件:
# vim /etc/hosts
192.168.0.120 zabbix-server
192.168.0.121 sh-proxy
192.168.0.122 node-122
(5)配置epel源:# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm
(6)配置Zabbix的yum源:
# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
# rpm -ql zabbix-release
# cat /dev/null > /etc/yum.repos.d/zabbix.repo
# vim /etc/yum.repos.d/zabbix.repo
[aliyun-zabbix]
name=Aliyun Zabbix Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[aliyun-zabbix-non-supported]
name=Aliyun Zabbix Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
5、zabbix-server節點搭建LAMP環境:
說明:Zabbix Web依賴于LAMP環境,安裝zabbix-web-mysql(4.0.14)軟件包時默認會自動安裝httpd(2.4.6)、PHP(5.4.16)、zabbix-web(4.0.14)等相關軟件包,此處使用yum方式安裝PHP 7.2版本。CentOS 7.7中MariaDB的版本為5.5.64,版本較低,升級為MariaDB 10.4版本后在導入create.sql文件時會提示“ERROR 1118 (42000) at line 1278: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.”,所以Zabbix Database使用MySQL 5.7。此處不單獨安裝httpd,并將Zabbix Database、Zabbix Server、Zabbix Web都部署在zabbix-server節點上,實際生產環境中可以分開部署。
(1)安裝配置MySQL 5.7:
a、查看系統中是否已經存在MariaDB:
# rpm -qa | grep -i mariadb --> mariadb-libs-5.5.64-1.el7.x86_64
# yum -y remove mariadb-libs
b、安裝mysql57-community-release-el7.rpm:
# rpm -ivh http://repo.mysql.com/mysql57-community-release-el7.rpm
備注:安裝后會在/etc/yum.repos.d目錄中生成mysql-community-source.repo和mysql-community.repo
c、安裝MySQL 5.7相關軟件包:
# yum list all | grep mysql-community
# yum -y install mysql-community-client mysql-community-common mysql-community-devel mysql-community-libs mysql-community-libs-compat mysql-community-server mysql-community-test
d、初始化MySQL 5.7:# mysqld --initialize --user=mysql --datadir=/var/lib/mysql
備注:初始化之前確保/var/lib/mysql目錄為空
e、修改my.cnf配置文件:
# mv /etc/my.cnf /etc/my.cnf.bak
# vim /etc/my.cnf
[mysqld]
port=3306
socket=/var/lib/mysql/mysql.sock
datadir=/var/lib/mysql
pid-file=/var/run/mysqld/mysqld.pid
log-error=/var/log/mysqld.log
lower_case_table_names=1
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
innodb_file_per_table=1
skip_name_resolve=1
slow_query_log=1
slow_query_log_file=mysql-slow.log
symbolic-links=0
explicit_defaults_for_timestamp=1
server_id=1
sync_binlog=1
innodb_flush_log_at_trx_commit=1
log_bin=mysql-bin
log_bin_index=mysql-bin.index
binlog_format=row
f、啟動MySQL:
# systemctl start mysqld
# systemctl status mysqld
# ps aux | grep mysqld
# ss -tunlp | grep -w :3306
# tail -100 /var/log/mysqld.log
g、配置開機自啟:# systemctl enable mysqld
h、查看root@localhost用戶的初始密碼:# grep password /var/log/mysqld.log
i、配置安全向導:# mysql_secure_installation
j、授權root用戶遠程登錄:
# mysql -uroot -p
mysql> create user root@'192.168.0.%' identified by '123456';
mysql> grant all on *.* to root@'192.168.0.%';
mysql> flush privileges;
(2)安裝配置PHP 7.2:
a、安裝webtatic-release.rpm:# rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
b、安裝PHP 7.2相關軟件包:
# yum list all | grep php
# yum -y install mod_php72w php72w-cli php72w-common php72w-devel php72w-fpm php72w-gd php72w-ldap php72w-mbstring php72w-mysqlnd php72w-opcache php72w-xml
c、查看PHP版本:# php -version
三、zabbix-server節點部署Zabbix Server、Zabbix Web和Zabbix Agent:
1、部署Zabbix Server:
(1)安裝zabbix-server-mysql軟件包:# yum -y install zabbix-server-mysql
(2)查看Zabbix Server版本:# zabbix_server -V
(3)創建zabbix數據庫和'zbxuser'@'192.168.0.%'用戶,并授權'zbxuser'@'192.168.0.%'用戶遠程管理:
# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zbxuser'@'192.168.0.%' identified by '123456';
mysql> grant all on zabbix.* to 'zbxuser'@'192.168.0.%';
mysql> flush privileges;
(4)導入create.sql文件,初始化zabbix數據庫(以下方法三選一):
# zcat /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql.gz | mysql -uzbxuser -h292.168.0.120 -p zabbix
或
# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql.gz
mysql> use zabbix;
mysql> source /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql
或
# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql.gz
# mysql -uzbxuser -h292.168.0.120 -p zabbix < /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql
備注:gzip -d執行后自動刪除create.sql.gz文件,保留解壓后的create.sql文件
(5)檢查zabbix數據庫中是否創建了表:
# mysql -uzbxuser -h292.168.0.120 -p123456 -e 'use zabbix; show tables;' 2> /dev/null | wc -l
(6)修改zabbix_server.conf配置文件:
# rpm -ql zabbix-server-mysql
# cd /etc/zabbix
# cp zabbix_server.conf{,.bak}
# vim zabbix_server.conf
修改前 | 修改后 |
# ? ListenPort=10051 | ListenPort=10051 |
# ? LogType=file | LogType=file |
LogFile=/var/log/zabbix/zabbix_server.log | 保持默認 |
LogFileSize=0 | 保持默認 |
PidFile=/var/run/zabbix/zabbix_server.pid | 保持默認 |
# ? DBHost=localhost | DBHost=192.168.0.120 |
DBName=zabbix | 保持默認 |
DBUser=zabbix | DBUser=zbxuser |
# ? DBPassword= | DBPassword=123456 |
# ? DBSocket= | DBSocket=/var/lib/mysql/mysql.sock |
# ? DBPort= | DBPort=3306 |
# ? ListenIP=127.0.0.1 | ListenIP=192.168.0.120 |
AlertScriptsPath=/usr/lib/zabbix/alertscripts | 保持默認 |
ExternalScripts=/usr/lib/zabbix/externalscripts | 保持默認 |
# ? FpingLocation=/usr/sbin/fping | FpingLocation=/usr/sbin/fping |
# ? AllowRoot=0 | AllowRoot=0 |
# User=zabbix | User=zabbix |
?(7)啟動Zabbix Server:
# systemctl start zabbix-server
# systemctl status zabbix-server
# ps aux | grep zabbix_server
# ss -tunlp | grep -w 10051
# tail -100 /var/log/zabbix/zabbix_server.log
(8)配置開機自啟:# systemctl enable zabbix-server
2、部署Zabbix Web:
(1)安裝zabbix-web-mysql軟件包:# yum -y install zabbix-web-mysql
(2)修改httpd.conf配置文件:
# vim /etc/httpd/conf/httpd.conf
修改前 | 修改后 |
#ServerName ? www.example.com:80 | ServerName ? 192.168.0.120:80 |
?(3)啟動httpd:
# systemctl start httpd
# systemctl status httpd
# ps aux | grep httpd
# ss -tunlp | grep -w :80
(4)配置開機自啟:# systemctl enable httpd
(5)瀏覽器訪問http://192.168.0.120/zabbix
說明:/etc/httpd/conf.d/zabbix.conf配置文件中已針對PHP 5.4優化,但目前安裝的是PHP 7.2,需要修改/etc/php.ini配置文件,Zabbix相關PHP網頁全存放在/usr/share/zabbix目錄下
# vim /etc/php.ini
修改前 | 修改后 |
post_max_size ? = 8M | post_max_size ? = 16M |
max_execution_time ? = 30 | max_execution_time ? = 300 |
max_input_time ? = 60 | max_input_time ? = 300 |
;date.timezone ? = | date.timezone ? = Asia/Shanghai |
重啟httpd:# systemctl restart httpd
刷新網頁,必須所有的檢查項都為“OK”才能繼續:
安裝后生成的配置文件:/etc/zabbix/web/zabbix.conf.php
登錄Zabbix Web,用戶名Admin,密碼zabbix:
3、Zabbix Web簡單配置:
(1)修改Admin用戶默認密碼:
Administration --> Users --> Admin --> Change password --> 輸入2次新密碼root@123 --> Update
新密碼:root@123
退出重新登錄
(2)禁用guest用戶:
Administration --> User groups --> 勾選Guests組 --> Disable
Administration --> Users --> guest用戶的狀態已變為Disabled
(3)修改刷新不支持項的時間間隔:
Administration --> General --> Other --> Refresh unsupported items默認10m修改為30s --> Update
(4)調整每頁顯示的行數,默認為50行:
右上角Admin--> User --> Rows per page --> Update
(5)開啟前端消息聲音:
右上角Admin--> Messaging --> Frontend messaging --> Update
4、部署Zabbix Agent:
說明:出現上述監控提示是因為zabbix-server節點沒有安裝Zabbix Agent
(1)安裝zabbix-agent軟件包:# yum -y install zabbix-agent
(2)修改zabbix_agentd.conf配置文件:
# cd /etc/zabbix
# cp zabbix_agentd.conf{,.bak}
# vim zabbix_agentd.conf
修改前 | 修改后 |
PidFile=/var/run/zabbix/zabbix_agentd.pid | 保持默認 |
# LogType=file | LogType=file |
LogFile=/var/log/zabbix/zabbix_agentd.log | 保持默認 |
LogFileSize=0 | 保持默認 |
# EnableRemoteCommands=0 | EnableRemoteCommands=1 |
Server=127.0.0.1 | Server=192.168.0.120 |
# ListenPort=10050 | ListenPort=10050 |
# ListenIP=0.0.0.0 | ListenIP=192.168.0.120 |
ServerActive=127.0.0.1 | ServerActive=192.168.0.120 |
Hostname=Zabbix server | Hostname=zabbix-server |
# AllowRoot=0 | AllowRoot=0 |
# User=zabbix | User=zabbix |
Include=/etc/zabbix/zabbix_agentd.d/*.conf | 保持默認 |
# UnsafeUserParameters=0 | UnsafeUserParameters=1 |
說明:
Server:使用于被動模式,指定允許哪臺Zabbix Server主動拉取當前Zabbix Agent的數據,此IP為Zabbix Server的IP,實現基于IP的訪問控制,如果有多個IP,使用逗號分隔。
ServerActive:使用于主動模式,指定Zabbix Agent將信息主動推送至哪臺Zabbix Server,如果有多個IP,使用逗號分隔。
(3)啟動Zabbix Agent:
# systemctl start zabbix-agent
# systemctl status zabbix-agent
# ps aux | grep zabbix_agent
# ss -tunlp | grep -w 10050
# tail -100 /var/log/zabbix/zabbix_agentd.log
(4)配置開機自啟:# systemctl enable zabbix-agent
5、配置Zabbix Web:
Configuration --> Hosts --> Zabbix server --> Update
修改前 | 修改后 |
Host ? name: Zabbix server | Host ? name: zabbix-server |
Visible ? name: | Visible ? name: Zabbix server |
IP ? address: 127.0.0.1 | IP ? address: 192.168.0.120 |
說明:上述Zabbix Web中的Host name值要與該節點的主機名,以及/etc/zabbix/zabbix_agentd.conf配置文件中的Hostname參數值三者相同
備注:zabbix-server節點完成對自身狀態的監控
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。