網(wǎng)站首頁 編程語言 正文
一、Zabbix 簡介
Zabbix 可以用來監(jiān)控各種網(wǎng)絡(luò)參數(shù),來保證服務(wù)器和系統(tǒng)的安全運(yùn)行。并且 Zabbix 還提供了靈活的通知機(jī)制,以此來讓系統(tǒng)管理員快速定位/解決存在的各種問題。是一個(gè)基于 Web 界面提供的分布式系統(tǒng)監(jiān)控以及網(wǎng)絡(luò)監(jiān)控功能的企業(yè)級(jí)開源解決方案。
1.監(jiān)控功能
- 主機(jī)性能監(jiān)控、網(wǎng)絡(luò)設(shè)備性能監(jiān)控、數(shù)據(jù)庫性能監(jiān)控、多種告警方式、詳細(xì)的報(bào)表圖。
- 監(jiān)控主機(jī),我們可以使用 Zabbix 提供的 Agent 軟件,來監(jiān)控 Linux、Windows、FreeBSD 等系統(tǒng)。
- 監(jiān)控網(wǎng)絡(luò)設(shè)備,我們可以通過 Zabbix 支持的 SNMP 協(xié)議來進(jìn)行監(jiān)控(SSH 協(xié)議不常用)
1)監(jiān)控對(duì)象
- 設(shè)備:服務(wù)器,路由器,交換機(jī)。
- 軟件:OS,網(wǎng)絡(luò),應(yīng)用程序。
2)主機(jī)性能指標(biāo)監(jiān)控
- 故障監(jiān)控:宕機(jī),服務(wù)不可用,主機(jī)不可達(dá)。
2.Zabbix 工作原理
首先,我們需要在被監(jiān)控的主機(jī)上安裝 Agent 軟件,用來收集當(dāng)前服務(wù)器的各項(xiàng)數(shù)據(jù)信息,并發(fā)送給監(jiān)控端,當(dāng)監(jiān)控端接收到 Agent 發(fā)送過來的信息后,會(huì)將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,接著通過 Web 界面來將數(shù)據(jù)在前端頁面上進(jìn)行展示和繪圖。
這里 Agent 收集數(shù)據(jù)分為 主動(dòng)和被動(dòng) 兩種模式:
- 主動(dòng): 客戶端通過連接監(jiān)控端的 10051 端口,來主動(dòng)的將收集到的信息推送給監(jiān)控端。
- 被動(dòng): 監(jiān)控端定時(shí)的通過連接客戶端的 10050 端口進(jìn)行通信,來收集客戶端的各項(xiàng)數(shù)據(jù)信息。
Zabbix 默認(rèn)使用的模式為被動(dòng)模式,也就是說當(dāng)我們需要監(jiān)控的主機(jī)數(shù)量較多時(shí),可能會(huì)影響到監(jiān)控端的性能。因?yàn)楸O(jiān)控端會(huì)定時(shí)的通過連接客戶端的端口進(jìn)行數(shù)據(jù)收集,所以我們可以 選擇性的配置部分主機(jī)為主動(dòng)模式,來減少監(jiān)控端的性能壓力。
3.Zabbix 組件
組件 | 作用 |
---|---|
Zabbix Server |
用于接收 Agent 發(fā)送過來的信息,所有的配置、數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)操作都是由它組織進(jìn)行 |
Database Storage |
用于存儲(chǔ)所有的配置信息以及收集的數(shù)據(jù)信息 |
Web Interface |
Zabbix 的 GUI 接口,可以用于界面展示(一般和 Server 運(yùn)行在用一臺(tái)主機(jī)上) |
Agent |
用于采集本地的數(shù)據(jù)信息,也就是所謂的被監(jiān)控端 |
Proxy |
可選組件,通常用于分布式監(jiān)控架構(gòu);相當(dāng)于是一個(gè)代理的 Server,用來收集 Agent 部分?jǐn)?shù)據(jù),并轉(zhuǎn)發(fā)給監(jiān)控端 |
4.Zabbix 進(jìn)程
- Sender:用于發(fā)送數(shù)據(jù)給 Server 或者 Proxy,通常用于耗時(shí)比較長的檢查;
- Get:Zabbix 命令,主要用于排查使用,可以在監(jiān)控端上執(zhí)行,來獲取被監(jiān)控端的信息;
- Agent:客戶端守護(hù)進(jìn)程,用于收集當(dāng)前主機(jī)的數(shù)據(jù)信息,如:CPU 負(fù)載、內(nèi)存的使用情況等;
- Proxy:代理守護(hù)進(jìn)程,相當(dāng)于是一個(gè)中轉(zhuǎn)站,可以將收集到的數(shù)據(jù)信息 主動(dòng)/被動(dòng) 的提交到監(jiān)控端上;
- Server:監(jiān)控端守護(hù)進(jìn)程,用于接收 Agent Get Sender Proxy Java_Gateway 提供的數(shù)據(jù)。
因?yàn)?Zabbix 并不能直接監(jiān)控Java 應(yīng)用,所以在 Zabbix 2.0 后推出 Java_Gateway
代理進(jìn)程,使我們可以監(jiān)控 Java 應(yīng)用。
二、使用 Zabbix 配置自定義監(jiān)控項(xiàng)
- 我們下面采用的是
docker-compose
方式安裝,物理安裝可以看我前面寫的這篇文章:傳送門
1.安裝 Zabbix
1)安裝 Docker
[root@Zabbix ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@Zabbix ~]# yum -y install epel-release [root@Zabbix ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 [root@Zabbix ~]# yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo [root@Zabbix ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12 [root@Zabbix ~]# systemctl enable docker --now
2)安裝 Docker-Compose
[root@Zabbix ~]# wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose [root@Zabbix ~]# chmod +x /usr/local/bin/docker-compose [root@Zabbix ~]# docker-compose --version
3)安裝 Agent
[root@Zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-agent-5.4.8-1.el7.x86_64.rpm [root@Zabbix ~]# egrep -v '^$|#' zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=127.0.0.1 ServerActive=127.0.0.1 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.d/*.conf [root@Zabbix ~]# systemctl enable zabbix-agent --now
4)安裝 Zabbix
[root@Zabbix ~]# mkdir -p /app/zabbix [root@Zabbix ~]# cd /app/zabbix/ [root@Zabbix zabbix]# cat <<END > docker-compose.yml version: "3" services: mysql-server: image: mysql:5.7 ports: - "3306:3306" volumes: - "/app/mysql:/var/lib/mysql" # 配置數(shù)據(jù)卷 (防止監(jiān)控?cái)?shù)據(jù)丟失) environment: MYSQL_ROOT_PASSWORD: 123123 TZ: Asia/Shanghai command: --character-set-server=utf8 --collation-server=utf8_bin restart: always zabbix-server: image: zabbix/zabbix-server-mysql:5.4.8-centos environment: DB_SERVER_HOST: 127.0.0.1 DB_SERVER_PORT: 3306 MYSQL_DATABASE: zabbix MYSQL_USER: root MYSQL_PASSWORD: 123123 TZ: Asia/Shanghai depends_on: - mysql-server restart: always network_mode: "host" # 使用主機(jī)網(wǎng)絡(luò) zabbix-web: image: zabbix/zabbix-web-nginx-mysql:5.4.8-centos ports: - "8000:8080" # Zabbix WebUI 映射端口 volumes: # 當(dāng)在 Web 界面配置成中文后,監(jiān)控界面會(huì)出現(xiàn)亂碼 - "./simkai.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf" environment: DB_SERVER_HOST: mysql-server DB_SERVER_PORT: 3306 MYSQL_DATABASE: zabbix MYSQL_USER: root MYSQL_PASSWORD: 123123 TZ: Asia/Shanghai ZBX_SERVER_HOST: 192.168.1.1 depends_on: - mysql-server - zabbix-server restart: always END [root@Zabbix zabbix]# docker-compose up -d [root@Zabbix zabbix]# docker-compose ps
-
simkai.ttf
字體,你們可以在自己電腦上的這個(gè)C:\Windows\Fonts
路徑找到。
5)驗(yàn)證:http://192.168.1.1:8000
(賬號(hào):Admin/zabbix
)
- 界面上出現(xiàn):
zabbix server is not running: the information displayed may not be current
報(bào)錯(cuò); - 原因可能是因?yàn)槲覀?
docker-compose
文件中的ZBX_SERVER_HOST
變量配置的值不是 Zabbix Server 的 IP 地址導(dǎo)致的。
我上面報(bào)錯(cuò)是為了讓你們看下效果,如果你們出現(xiàn)如上配置,按照我的配置修改即可。
配置中文
2.開啟自定義監(jiān)控項(xiàng)
[root@Zabbix ~]# echo "UnsafeUserParameters=1" >> /etc/zabbix/zabbix_agentd.conf
3.編寫 Nginx 自定義監(jiān)控腳本
[root@Zabbix ~]# yum -y install nginx [root@Zabbix ~]# cat <<END > /etc/nginx/conf.d/status.conf server { listen 80; server_name 127.0.0.1; location /status { stub_status on; allow 127.0.0.1; allow 192.168.1.0/24; deny all; } } END
1)編寫自定義監(jiān)控腳本
[root@Zabbix ~]# mkdir /etc/zabbix/scripts [root@Zabbix ~]# vim /etc/zabbix/scripts/nginx_status.sh #!/bin/bash HOST="127.0.0.1" PORT="80" # 監(jiān)控 Nginx 進(jìn)程是否存在 function Ping { /sbin/pidof nginx | wc -l } # 監(jiān)控 Nginx 狀態(tài)信息 function Active { /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Active" | awk '{print $NF}' } function Reading { /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Reading" | awk '{print $2}' } function Writing { /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Writing" | awk '{print $4}' } function Waiting { /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Waiting" | awk '{print $6}' } function Server { /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $1}' } function Accepts { /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $2}' } function Requests { /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $3}' } # 執(zhí)行 function $1 [root@Zabbix ~]# chmod +x /etc/zabbix/scripts/nginx_status.sh
2)定義監(jiān)控腳本
[root@Zabbix ~]# cat <<"END" > /etc/zabbix/zabbix_agentd.d/nginx_status.conf UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1 END [root@Zabbix ~]# systemctl restart zabbix-agent
3)驗(yàn)證
[root@Zabbix ~]# docker exec -it zabbix-zabbix-server-1 /bin/bash
創(chuàng)建模板
創(chuàng)建應(yīng)用集
創(chuàng)建監(jiān)控項(xiàng)
因?yàn)樵谖覀兊谋O(jiān)控腳本中,一共定義了 8 個(gè)監(jiān)控項(xiàng),所以我們上面也要?jiǎng)?chuàng)建 8 個(gè)監(jiān)控項(xiàng),重復(fù)上面操作,創(chuàng)建出對(duì)應(yīng)的即可。
給我們的監(jiān)控項(xiàng)創(chuàng)建圖形
將 Nginx 模板加入到主機(jī)中
查看監(jiān)控圖
其實(shí) Zabbix 的自定義監(jiān)控項(xiàng)就是由 key/value
的形式組成。即,我們只需要把要監(jiān)控的數(shù)據(jù)定義成一個(gè) value
,key
里面的值就是我們想要監(jiān)控的數(shù)據(jù),那么也就是說,當(dāng)我們定時(shí)的查找這個(gè) key
對(duì)應(yīng)的值,便可以得到監(jiān)控?cái)?shù)據(jù)。
原文鏈接:https://blog.csdn.net/weixin_46902396/article/details/124016806
相關(guān)推薦
- 2023-06-16 Dubbo?系列JDK?SPI?原理解析_服務(wù)器其它
- 2024-01-12 如何理解 Elasticsearch 中的 Indices、Types、Documents、Fiel
- 2022-05-05 Python學(xué)習(xí)之列表常用方法總結(jié)_python
- 2022-01-30 Unknown custom element: <router-view> - did you re
- 2022-12-06 Python之列表的append()方法最容易踩的坑_python
- 2023-05-03 Pycharm?Terminal?與Project?interpreter?安裝包不同步問題解決_p
- 2023-10-27 獲取html中元素的寬高
- 2022-01-15 Es6中用Set去重
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支