文章目錄
- 一、zabbix概述
- 1、定義
- 2、zabbix監控原理
- 3、監控對象
- 4、zabbix的3種架構
- (1) C/S架構
- (2)分布式架構:zabbix-proxy-client架構
- (3) master-node-client架構
- 5、zabbix監控模式
- 二、部署zabbix服務端
- 1.關閉防火墻和selinux,設置服務器名稱,同步時間
- 2、下載zabbix和相關軟件
- 3、修改 zabbix server 配置文件,修改數據庫的密碼
- 4、修改 zabbix 的 php 配置文件
- 5、啟動 zabbix 相關服務
- 6、瀏覽器訪問zabbix:http://192.168.116.60/zabbix
- 三、部署 zabbix 客戶端
- 1.關閉防火墻和selinux,設置服務器名稱,同步時間
- 2.下載zabbix客戶端
- 3.修改客戶端配置文件并開啟
- 4.在服務端驗證zabbix-agent2 的連通性
- 5.新建客戶端
- 四、監控模板
- 1.使用官方或已開發設計好的模板
- 2.自定義監控模板
- (1)監控客戶端主機登錄人數
- (2)監控nginx客戶端狀態信息
- 五、設置郵件報警
- 1.設置報警媒介
- 六、配置zabbix服務端自動發現與自動注冊
- 1.自動發現
- 2.自動注冊
- 七、部署zabbix代理服務器
- 八、SNMP監控
一、zabbix概述
1、定義
zabbix是一個基于 web 界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。
zabbix能監視各種網絡參數,保證服務器系統的安全運營,并提供靈活的通知機制以讓系統管理員快速定位、解決存在的各種問題。
zabbix由兩部分構成,zabbix server與可選組件zabbix agent。通過c/s 模式采集數據,通過b/s 模式在web端展示和配置。
zabbix server可以通過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它可以運行在Linux等平臺上。
zabbix agent需要安裝在被監視的目標服務器上,它主要完成對硬件信息或與操作系統有關的內存,CPU等信息的收集。
2、zabbix監控原理
zabix agent安裝在被監控的主機上,zabiboix agent負責定期收集客戶端本地各項數據,并發送至zabbix server端,zabbix server收到數據后,將數據存儲到數據庫中,用戶基于Zabbix WEB可以看到數據在前端展現圖像。當zabbix監控某個具體的項目,該項目會設置一個觸發器閾值,當被監控的指標超過該觸發器設定的閾值,會進行一些必要的動作,動作包括發送信息(郵件、微信、短信)、發送命令( shell命令、reboot、restart、install等)。
3、監控對象
zabbix 監控部署在系統中,包含常見的五個程序:zabbix_server、zabix_agent、zabbix proxy、zabbix_get、zabix_sender等。
(1)zabbix server
zabbix服務端守護進程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix _proxy的數據最終都提交給zabbix server;
(2)zabbix agent
客戶端守護進程,負責收集客戶端數據,例如:收集CPU負載、內存、硬盤使用情況等;
(3)zabbix proxy
zabbix分布式代理守護進程,通常大于500臺主機,需要進行分布式監控架構部署;
(4)zabbix get
zabbix 數據接收工具,單獨使用的命令,通常在server或者 proxy端執行獲取遠程客戶端信息的命令;
(5)zabbix sender
zabbix數據發送工具,用戶發送數據給 server或 proxy端,通常用戶耗時比較長的檢查。
4、zabbix的3種架構
(1) C/S架構
(1)被監控的機器和zabbix直接相連zabbix agent負責采集服務器的信息,zabbix server 負責存儲并通過web展示硬件信息
(2)zabbix服務端與客戶端是最簡單的架構,監控機器和別監控機器之間不經過任何處理,直接由zabbix-server 和zabbix-agent之間進行數據交換。
(3)適用于網絡比較簡單,盡量在局域網內,設備比較少的監控環境
(2)分布式架構:zabbix-proxy-client架構
(1)被監控的機器和zabbix中間有個proxy代理,zabbix agent將采集的信息傳到代理上由代理同一傳給zabbix server進行前端頁面展示和數據存儲。
(2)proxy是server和客戶端溝通的橋梁,proxy本身沒有前端且其本身并不存放數據,只是將agent發來的數據暫時存放,而后再提交給server,這種架構是和master-node-client架構做比較的架構,
(3)一般適用于跨機房、跨網絡、或中型網絡架構的監控
(3) master-node-client架構
(1)master下有node節點,node可以存儲數據,node有自己的配置文件和數據庫注意負責將配置信息和監控數據與master同步,node下可以直接接入主機或接入代理proxy。
(2)適用于跨機房、跨網絡、大環境下
5、zabbix監控模式
(1)主動模式:zabbix agent主動將采集到的監控信息傳輸給zabbix server
(2)被動模式:zabbix server向zabbix agent索引采集到的監控信息,zabbix agent返回采集到的數據
二、部署zabbix服務端
zabbix 服務端 zabbix_server 默認使用 10051 端口
zabbix_server:192.168.116.60(內存至少 2G,推薦 4G)
1.關閉防火墻和selinux,設置服務器名稱,同步時間
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server
su
ntpdate ntp.aliyun.com
2、下載zabbix和相關軟件
#獲取 zabbix 的下載源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#更換 zabbix.repo 為阿里源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repoyum clean all && yum makecache
yum install -y zabbix-server-mysql zabbix-agent#安裝SCL(Software Collections),便于后續安裝高版本的 php,默認 yum 安裝的 php 版本為 5.4,版本過低,zabbix 5.0 版本對 php 版本最低要 7.2.0 版本。SCL 可以使得在同一臺機器上使用多個版本的軟件,而又不會影響整個系統的依賴環境。軟件包會安裝在 /etc/opt/rh/ 目錄下。
yum install -y centos-release-scl
還需要修改一下zabbix源,開啟前端環境下載
#安裝前端環境
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl#安裝 zabbix 所需的數據庫
yum install -y mariadb-server mariadb
systemctl enable --now mariadb#初始化數據庫
mysql_secure_installation
#導入數據庫信息
zcat /usr/share/doc/zabbix-server-mysql-5.0.15/create.sql.gz | mysql -uroot -pabc123 zabbix
3、修改 zabbix server 配置文件,修改數據庫的密碼
vim /etc/zabbix/zabbix_server.conf
......
DBPassword=zabbix #124行,指定 zabbix 數據庫的密碼
4、修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai #24行,取消注釋,修改時區
5、啟動 zabbix 相關服務
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
6、瀏覽器訪問zabbix:http://192.168.116.60/zabbix
可以點擊主機查看圖形化數據,但會出現中文亂碼,需要導入字符集
#解決 zabbix-server Web頁面中文亂碼問題
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
三、部署 zabbix 客戶端
zabbix 5.0 版本采用 golang 語言開發的新版本客戶端 agent2 。
客戶端 zabbix_agent2 默認使用 10050 端口。zabbix_agent01:192.168.116.70
1.關閉防火墻和selinux,設置服務器名稱,同步時間
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01
su
ntpdate ntp.aliyun.com
2.下載zabbix客戶端
#設置 zabbix 的下載源,安裝 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repoyum install -y zabbix-agent2
3.修改客戶端配置文件并開啟
#修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.116.60 #80行,指定 zabbix 服務端的 IP 地址
ServerActive=192.168.116.60 #120行,指定 zabbix 服務端的 IP 地址
Hostname=zbx-agent01 #131行,指定當前 zabbix 客戶端的主機名#開啟服務
systemctl enable --now zabbix-agent2.service
4.在服務端驗證zabbix-agent2 的連通性
#安裝 zabbix 主動獲取數據的命令
yum install -y zabbix-get #測試
zabbix_get -s '192.168.116.70' -p 10050 -k 'agent.ping'
zabbix_get -s '192.168.116.70' -p 10050 -k 'system.hostname'
5.新建客戶端
四、監控模板
1.使用官方或已開發設計好的模板
Browse Zabbix / Zabbix - ZABBIX GIT
Zabbix searcher - 900+ Zabbix projects: templates, scripts, integrations, …
Zabbix community templates
2.自定義監控模板
(1)監控客戶端主機登錄人數
首先再客戶端自定義鍵(這里演示的用于監控主機登錄人數,閾值為3,大于3報警)
在/etc/zabbix/zabbix_agent2.d/下新建.conf文件,在里面自定義鍵,格式為UserParameter=<key>,<commend>
之后重啟服務讀取文件配置 systemctl restart zabbix-agent2.service
可以在服務端使用命令進行測試(當前登錄數為4)
測試無誤就可以添加自定義模板了
創建配置應用集
創建配置觸發器
創建配置圖形
將模板添加到客戶端中
查看圖形(監控到了登錄人數)
(2)監控nginx客戶端狀態信息
客戶端安裝nginx,模擬監控nginx服務器
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1yum install nginx -y
修改nginx配置文件/etc/nginx/conf.d/default.conf,打開狀態統計
重啟服務,查看狀態統計頁面
systemctl start nginx
curl -s 127.0.0.1/status
編寫監控nginx狀態信息腳本,獲取以上值,并給執行權限
#/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scripts
HOST="localhost"
PORT=80
URL="status"
NGINX_COMMAND=$1
#檢查nginx狀態
nginx_check() {if [ -f /sbin/pidof ]; then/sbin/pidof nginx | wc -welseps aux | grep -v "grep" | grep -c "nginx:"fi
}
#nginx狀態相關信息的值
nginx_active(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Active/ {print $NF}'
}nginx_reading(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Reading/ {print $2}'
}nginx_writing(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Writing/ {print $4}'
}nginx_waiting(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Waiting/ {print $6}'
}nginx_accepts(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $1}'
}nginx_handled(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $2}'
}nginx_requests(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $3}'
}
#命令獲取對應值
case $NGINX_COMMAND incheck)nginx_check;;active)nginx_active;;reading)nginx_reading;;writing)nginx_writing;;waiting)nginx_waiting;;accepts)nginx_accepts;;handled)nginx_handled;;requests)nginx_requests;;*)echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"
esac
腳本測試無誤
自定義監控變量,用于模板使用
UserParameter=nginx.status[*],/etc/zabbix/zabbix_shell/zabbix_nginx.sh $1
#[*] 代表自定義變量nginx.status傳入的值
#$1 代表前面變量傳入的值作為此腳本執行的參數,獲取對應狀態值
重啟服務systemctl restart zabbix-agent2.service,在服務端進行測試
測試無誤,去前端自定義模板
五、設置郵件報警
1.設置報警媒介
點擊左邊菜單欄【管理】中的【報警媒介類型】,點擊【創建媒體類型】
添加告警告知郵箱
點擊左邊菜單欄【用戶設置】–>【報警媒介】,點擊【添加】
六、配置zabbix服務端自動發現與自動注冊
1.自動發現
zabbix 自動發現(對于 agent2 是被動模式)是zabbix server 主動的去發現所有的客戶端,然后將客戶端的信息登記在服務端上。缺點是如果定義的網段中的主機數量多,zabbix server 登記耗時較久,且壓力會較大。
首先添加一臺客戶端,安裝好zabbix-agent2服務,修改配置文件指定服務端地址和客戶端名稱,然后開啟服務
服務端和客戶端都需要配置彼此的域名解析
2.自動注冊
zabbix 自動注冊(對于 agent2 是主動模式),zabbix agent2 會主動上報自己的信息,發給 zabbix server。缺點是可能因為配置文件配置錯誤或者網絡不通等原因導致 zabbix agent2 可能找不到 zabbix server。
先禁用自動發現,刪除客戶端02,做自動注冊
在客戶端配置文件開啟自動注冊,然后重啟服務
添加自動注冊動作
七、部署zabbix代理服務器
配置zabbix代理,分擔 server 的集中式壓力,解決多機房之間的網絡延時問題。
首先關閉防火墻,修改主機名,安裝代理
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-proxyrpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repoyum install -y zabbix-proxy-mysql zabbix-get
安裝代理所需數據庫,做初始化,密碼設的是123123
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
mysql_secure_installation
添加數據庫和用戶,授權,導入數據庫表信息
mysql -uroot -p123123
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
quit
#退出后導入表數據
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.29/schema.sql.gz | mysql -uroot -p123123 zabbix_proxy
修改agent 指向代理的地址
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.116.40 #80行,指定 zabbix 代理服務器的 IP 地址
ServerActive=192.168.116.40 #120行,指定 zabbix 代理服務器的 IP 地址
還需要在每臺主機添加域名解析
之后去服務端指定代理
創建客戶端時添加代理
之后依次重啟server、proxy、client 服務
等待客戶端全部亮起即可
八、SNMP監控
使用SNMP簡單網絡管理協議,對網絡中的資源進行管理和實時監控。
首先在需要監控的路由器、交換機上安裝snmp(這里以server本機為例)
yum install -y net-snmp net-snmp-utils.x86_64systemctl start snmpd.service
然后去前端修改使用snmp