zabbix簡介
Zabbix 是由 Alexei Vladishev 開發的一種網絡監視、管理系統,基於 Server-Client 架構。可用於監視各種網絡服務、服務器和網絡機器等狀態。並設定自定義腳本,做到一定的自恢復功能
Zabbix 作為企業級分布式監控系統的優點:分布式監控,支持 node 和 proxy 分布式模式;自動化注冊,根據規則,自動注冊主機到監控平台,自動添加監控模板;支持 agentd、snmp、ipmi 和 jmx 等很多通信方式
服務模塊
zabbix-server 提供數據處理
zabbix web GUI 提供web展示
zabbix Database 提供數據存儲
zabbix-agent 被監控端安裝的模塊,上報數據到zabbix-server中
SNMP: 支持各類常見的網絡設備
- zabbix server:負責接收agent發送的報告信息的核心組件,所有配置、統計數據及操作數據都由它組織進行;
- database storage:專用於存儲所有配置信息,以及由zabbix收集的數據;
- web interface:zabbix的GUI接口;
- roxy:可選組件,常用於監控節點很多的分布式環境中,代理server收集部分數據轉發到server,可以減輕server的壓力;
- agent:部署在被監控的主機上,負責收集主機本地數據如cpu、內存、數據庫等數據發往server端或proxy端;
客戶端守護進程
此進程收集客戶端數據,例如cpu負載、內存、硬盤使用情況等。
zabbix_get zabbix工具,單獨使用的命令,通常在server或者proxy端執行獲取遠程客戶端信息的命令。通常用戶排錯。例如在server端獲取不到客戶端的內存數據,我們可以使用zabbix_get獲取客戶端的內容的方式來做故障排查。
zabbix_sender
zabbix工具,用於發送數據給server或者proxy,通常用於耗時比較長的檢查。很多檢查非常耗時間,導致zabbix超時。於是我們在腳本執行完畢之后,使用sender主動提交數據。
zabbix_server
zabbix服務端守護進程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的數據最終都是提交到server
備注:當然不是數據都是主動提交給zabbix_server,也有的是server主動去取數據。
zabbix_proxy
zabbix代理守護進程。功能類似server,唯一不同的是它只是一個中轉站,它需要把收集到的數據提交/被提交到server里。為什么要用代理?代理是做什么的?賣個關子,請繼續關注運維生存時間zabbix教程系列。
zabbix_java_gateway
zabbix2.0之后引入的一個功能。顧名思義:Java網關,類似agentd,但是只用於Java方面。需要特別注意的是,它只能主動去獲取數據,而不能被動獲取數據。它的數據最終會給到server或者proxy。
監控流程
agentd需要安裝到被監控的主機上,它負責定期收集各項數據,並發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展現和繪圖。這里agentd收集數據分為主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。
功能拆解
- zabbix服務搭建
- 監控告警外發
- 自定義監控腳本
- 自定義執行觸發腳本
- 配置Grafana頁面顯示
- 主機批量發現
zabbix用戶手冊 https://www.zabbix.com/documentation/5.0/zh/manual
安裝 zabbix 5.0 LTS
參考官網 zabbix 5.0.12-1.el7
# env --> CentOS Linux release 7.9.2009 (Core) mininal install
# 1 Install Zabbix repository
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
# 2 Install Zabbix server and agent
yum -y install zabbix-server-mysql zabbix-agent
# 3 Install Zabbix frontend (5.0版本要求高版本的php)
## 3.1 enable zabbix-frontend repository
yum install centos-release-scl -y
sed -i 11cenabled=1 /etc/yum.repos.d/zabbix.repo
## 3.2 Install Zabbix frontend packages
yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl
# 4 初始化數據庫
# docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /data/mysql:/var/lib/mysql --restart=always mysql:5.7.34
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@'192.168.1.%' identified by '123456';
grant all privileges on zabbix.* to zabbix@'192.168.1.%';
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -h192.168.1.113 -p zabbix
# 5 為Zabbix server配置數據庫
# sed -i.bak /\#\ DBPassword=/aDBPassword=123456 /etc/zabbix/zabbix_server.conf
cat > /etc/zabbix/zabbix_server.conf << eof
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=192.168.1.113
DBName=zabbix
DBUser=zabbix
DBPassword=123456
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
eof
# 6 為Zabbix前端配置PHP
sed -i.bak /\;date.timezone\ =/adate.timezone=Asia/Shanghai /etc/opt/rh/rh-php72/php.ini
## 6.1配置nginx server
sed -n 1,3p /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
listen 80;
server_name 192.168.1.113;
# 6.2 配置php用戶與時區
sed -i.bak /listen.acl_users/c'listen.acl_users = apache,nginx' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
echo 'php_value[date.timezone] = Asia/Shanghai' >> /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
## cat /etc/zabbix/web/zabbix.conf.php
# 7 啟動Zabbix server和agent進程
systemctl enable --now zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
# 8 連接Zabbix前端 Admin@zabbix
http://192.168.1.113
zabbix-server相關優化
1. 字體漢化
對於以上環境和場景的安裝,zabbix的漢化仍然會有亂碼現象,重新載入自定義字體
#1. 上傳字體
Windows控制面板 -- 字體 -- simkai.ttf字體 -- 上simkai.ttf傳字體到 /usr/share/fonts/dejavu/目錄中
cat /var/lib/alternatives/zabbix-web-font
#2. 重新連接字體
ln -sf /usr/share/fonts/dejavu/simkai.ttf /etc/alternatives/zabbix-web-font
#3. 驗證
安裝zabbix agent
使用二進制包安裝
# 下載與解壓包
wget https://www.zabbix.com/cn/download_agents?version=5.0+LTS&release=5.0.12&os=Linux&os_version=3.0&hardware=amd64&encryption=No+encryption&packaging=Archive&show_legacy=0 -P /tmp
mkdir /usr/local/zabbix-agent
tar -xf zabbix_agent-5.0.12-linux-3.0-amd64-static.tar.gz -C /usr/local/zabbix-agent
useradd zabbix -s /sbin/nologin
# 配置
cat > /usr/local/zabbix-agent/conf/zabbix_agentd.conf << eof
# Passive checks related #被動檢查相關配置
Server=192.168.1.113 #指向當前zabbix server
# Option: ListenPort
#ListenPort=10050 #監聽端口
# Option: StartAgents
StartAgents=3 #被動狀態時默認啟動的實例數(進程數),為0不監聽任何端口
# Option: Hostname
Hostname=192.168.1.103 #區分大小寫且在zabbix server唯一的值
LogFile=/tmp/zabbix_agentd.log
# PidFile=/tmp/zabbix_agentd.pid
eof
# 啟動
echo '/usr/local/zabbix-agent/sbin/zabbix_agentd -c /usr/local/zabbix-agent/conf/zabbix_agentd.conf' >> /etc/rc.local
. /etc/rc.local
# server添加主機
配置 -- 主機 -- 添加主機 -- 模板關聯
使用包安裝
https://repo.zabbix.com/zabbix/
yum -y install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.12-1.el7.x86_64.rpm
cat > /etc/zabbix/zabbix_agentd.conf << eof
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.113
ServerActive=192.168.1.113
Hostname=192.168.1.107
Include=/etc/zabbix/zabbix_agentd.d/*.conf
eof
systemctl enable --now zabbix-agent
PS
- zabbix中文手冊
- https://github.com/zabbix/zabbix-docker/tree/5.0
- https://www.zabbix.com/documentation/current/manual/installation/containers
- zabbix忘記密碼
update zabbix.users set passwd='5fce1b3e34b520afeffb37ce08c7cd66' where userid='1';
- zabbix企業級的分布式開源監控解決方案 - 文檔要點
- open-falcon
- 夜鶯Nightingale