文章目录
- Zabbix 安装
- Ubuntu 18.04.1 server 安装Zabbix 4.0
- Centos7 安装Zabbix3.4
- Centos7 安装zabbix4.2
- Centos7.1908安装zabbix 基于ngix
- Debian11安装zabbix6.0LTS 基于PostgreSQL和NGINX
- AlmaLinux9.2使用国内清华源在线安装zabbix6.0.18LTS 基于MySQL和NGINX
- Ubunut22.04使用国内清华源在线安装zabbix6.0.18LTS 基于MySQL和NGINX
- Debian 12使用国内清华源在线安装zabbix7.0 LTS 基于PostgreSQL和nginx
- Zabbix 概述
- Zabbix 组件
- zabbix 文件
- Zabbix Agent
- Zabbix Agent 安装
- zabbix agent监控项
- zabbix服务端
- Zabbix Appliance
- zabbix 配置
- zabbix 配置邮件报警
- zabbix 配置邮件报警
- zabbix 监控项
- 监控项类型
- 简单监控
- Web监控
- snmp trap
- Ubunut22.04 Zabbix6.0.17 LTS 环境
- CentOS7 Zabbix4.2.7 测试环境
- Zabbix Server端开启snmp-trap
- 被监控设备端 (以Centos7 安装SNMp为例)
- zabbix-server端配置snmp-trap监控项
- zabbix 宏
- zabbix 触发器
- grafana 图形化展示
- grafana安装
- grafana 变量使用
- Zabbix拓扑图
- Zabbix 官方python库 zabbix_utils
- zabbix_utils 介绍
- zabbix_utils 安装
- zabbix_utils 使用
- 环境变量
- 用户认证
- Zabbix API
- APIVersion 对象
- host 主机
- items 监控项
- 获取指定主机监控项周期最大值
- Zabbix常见问题
- Zabbix中的历史数据和趋势数据
- 将Zabbix语言改成中文
- Zabbix "图形"下中文乱码
- 安装snmp工具snmpwalk
- zabbix fping配置
- 时区修改故障
- zabbix-server启动故障
Zabbix 安装
Ubuntu 18.04.1 server 安装Zabbix 4.0
- 添加阿里云的源(只用官方源,安装zabbix的时候会出错)
vi /etc/apt/sources.list.d/aliyun.list
- 文件内容
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
- Zabbix 环境安装
sudo apt update && apt upgrade
sudo apt install -y apache2
sudo apt install -y mysql-server
sudo apt install -y php php7.2-cli php7.2-mysql php7.2-common php7.2-curl php7.2-json php7.2-cgi libapache2-mod-php7.2 php7.2
sudo service apache2 start
sudo wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb
sudo dpkg -i zabbix-release_4.0-2+bionic_all.deb
sudo apt update
- 安装Zabbix
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-agent
- 初始化数据库(初始没有密码,直接回车)
mysql -uroot -p create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'China123'; quit
- 导入数据用上面设置的密码"China123",输入密码后等待时间有点长,直到出现命令提示符.
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
- 为Zabbix配置数据库
vi /etc/zabbix/zabbix_server.conf DBPassword=China123
- 为Zabbix时区配置PHP(注意:在mod_php7.c下)
vi /etc/zabbix/apache.conf php_value date.timezone Asia/Shanghai
- 启动Zabbix server和Zabbix agent进程
systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
- 访问Zabbix
`http://IP/zabbix - 配置页面只需要输入密码"China123"其它默认
- 访问用户:Admin 密码:zabbix
Centos7 安装Zabbix3.4
- 基本环境
- IP地址:需要有IP地址
- 关闭Linux防火墙
systemctl stop firewalld.service systemctl disable firewalld.service
- 关闭selinux,
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- 安装mysql.现在叫mariadb
yum install mariadb-server mariadb -y
- 安装配置文件
rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
- 安装 Zabbix server, frontend, agent
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent
- 启动数据库服务
systemctl start mariadb
- 初始化数据库
mysql -uroot -p //回车后提示输入密码,默认没有密码。 create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; //设置密码为”zabbix”,注意以上两条命令是以”;”结尾的,每条命令执行成功会有“Query OK”的提示。 Quit //退出数据库设置
- 用设置的密码”zabbix”初始化数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix
- 配置zabbix server的数据库
vi /etc/zabbix/zabbix_server.conf DBPassword=Zabbix
- 设置php的zabbix时区
/etc/httpd/conf.d/zabbix.conf, php_value date.timezone Asia/Shanghai
- 修改一些zabbix的默认配置
vi /etc/Zabbix/Zabbix_server.conf LogFileSize=10 DebugLevel=3 DBHost=localhost
- 开启agent进程
systemctl restart zabbix-server zabbix-agent httpd systemctl enable zabbix-server zabbix-agent httpd
Centos7 安装zabbix4.2
- 基本环境
- IP地址:需要有IP地址
- 关闭Linux防火墙
systemctl stop firewalld.service systemctl disable firewalld.service
- 关闭selinux,
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- 安装mysql.现在叫mariadb
yum install mariadb-server -y systemctl enable mariadb systemctl restart mariadb
- 安装zabbix
rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm yum clean all yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
- 设置数据库
- 创建数据库
- 设置密码权限
- 导入数据库(输入新密码)
- 设置Zabbix server数据库密码
- 配置时区
mysql -uroot -p create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'China123'; quit zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix sed -i '/^DBPassword=/d' /etc/zabbix/zabbix_server.conf sed -i '/# DBPassword=/a\\DBPassword=China123' /etc/zabbix/zabbix_server.conf vi /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/Shanghai systemctl restart zabbix-server zabbix-agent httpd mariadb systemctl enable zabbix-server zabbix-agent httpd mariadb
Centos7.1908安装zabbix 基于ngix
- 脚本
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum clean all yum makecache yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent yum install mariadb-server -y systemctl enable mariadb systemctl restart mariadb mysql -uroot -p create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; quit; zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix #输入上面设置的密码 sed -i '/^DBPassword=/d' /etc/zabbix/zabbix_server.conf sed -i '/# DBPassword=/a\\DBPassword=China123' /etc/zabbix/zabbix_server.conf #编辑/etc/php-fpm.d/zabbix.conf文件修改时区 systemctl restart zabbix-server zabbix-agent nginx php-fpm systemctl enable zabbix-server zabbix-agent nginx php-fpm firewall-cmd --add-service=http firewall-cmd --add-service=http --permant #安装前端
Debian11安装zabbix6.0LTS 基于PostgreSQL和NGINX
- 官方文档
- 使用root账户
- 安装zabbix仓库
apt install -y wget sudo wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-1+debian11_all.deb dpkg -i zabbix-release_6.0-1+debian11_all.deb apt update
- 安装Zabbix server, frontend, agent
apt install -y zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent #不知道为什么连apache2也安装并设置成开机启动了,有时会跟nginx有冲突(默认都是80端口) systemctl disable apache2 systemctl stop apache2
- 安装并初始化postgres数据库
apt install -y postgresql sudo -u postgres createuser --pwprompt zabbix sudo -u postgres createdb -O zabbix zabbix sudo zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
- 修改配置文件
- 密码为:China123
- 服务端IP为:192.168.99.18
# 修改数据库密码 sed -i '/^DBPassword=/d' /etc/zabbix/zabbix_server.conf sed -i '/# DBPassword=/a\\DBPassword=China123' /etc/zabbix/zabbix_server.conf # 修改nginx监控端口和server name sudo vi /etc/zabbix/nginx.conf # 修改需要的端口,如果没有域名server_name修改为服务器IP
- 重启服务并设置开机启动
systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm
- 登录zabbix
- 登录地址:http://IP;用户名:Admin;密码:zabbix
- 如果没有中文可能是debian系统没有添加中文语言环境
# 查看系统语言环境,如果没有zh_CN.utf8,则需要添加 locale -a # 执行命令,勾选zh_CN.utf8 dpkg-reconfigure locales # 再次使用命令查看 locale -a # 重启zabbix相关服务,再次登录web页面 systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
- 解决zabbix图形监控中文乱码
- 在c:\windows\fonts中搜索“微软雅黑”
- 复制出来,是两个文件“msyh.ttf”和“msyhbd.ttf”
- 将两个文件上传到zabbix服务器
- 查找zabbix字体配置文件路径
find / -name defines.inc.php # 默认是/usr/share/zabbix/include/defines.inc.php # 查看字体配置路径,realpath('assets/fonts'),括号中是/usr/share/zabbix/的相对路径 grep ZBX_FONTPATH /usr/share/zabbix/include/defines.inc.php # 将字体文件“msyh.ttf”和“msyhbd.ttf”复制到/usr/share/zabbix/assets/fonts目录 sudo cp msyhbd.ttf msyh.ttf /usr/share/zabbix/assets/fonts # 查看设置的字体名,默认是graphfont grep ZBX_FONT_NAME /usr/share/zabbix/include/defines.inc.php # 替换字体名称 sudo sed -i 's/graphfont/msyh/g' /usr/share/zabbix/include/defines.inc.php # 重启zabbix相关服务 sudo systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
AlmaLinux9.2使用国内清华源在线安装zabbix6.0.18LTS 基于MySQL和NGINX
- 在禁用selinux环境下测试通过
- 脚本
#!/bin/bash # 1. 在AlmaLinux9.2上测试通过,是在禁用selinux的情况下测试的 # 2. 使用root用户运行本脚本 # 3. zabbix为6.0.18 LTS版 ############################ 定义变量 ############################ db_root_password=China123 db_zabbix_password=China321 package_zabbix_url=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm ############################ 定义变量 ############################ dir=$(pwd) echo "############################ 安装, 初始化mysql-server,创建zabbix初始数据库 ############################" dnf -y install mysql-server systemctl enable mysqld.service systemctl restart mysqld echo 初始化数据库 cat > $dir/db_init.txt <<-EOF alter user 'root'@'localhost' identified by '$db_root_password'; flush privileges; create database zabbix character set utf8mb4 collate utf8mb4_bin; create user zabbix@localhost identified by '$db_zabbix_password'; grant all privileges on zabbix.* to zabbix@localhost; set global log_bin_trust_function_creators = 1; flush privileges; EOF mysql -uroot --skip-password < $dir/db_init.txt --connect-expired-password echo "############################ 安装zabbix仓库... ############################" rpm -Uvh $package_zabbix_url dnf clean all echo "############################ 修改zabbix仓库为清华软件源... ############################" sudo sed -e 's|^baseurl=https://repo.zabbix.com|baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix|g' \ -i.bak \ /etc/yum.repos.d/zabbix*.repo echo "############################ 安装Zabbix server,Web前端,agent ############################" dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent echo "############################ 导入初始架构和数据 ############################" zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p$db_zabbix_password zabbix cat > $dir/db_init2.txt <<-EOF set global log_bin_trust_function_creators = 0; EOF mysql -uroot -p$db_root_password < $dir/db_init2.txt --connect-expired-password echo "############################ 为Zabbix server配置数据库 ############################" sed -i "s/# DBPassword=/DBPassword=$db_zabbix_password/" /etc/zabbix/zabbix_server.conf echo "############################ 添加中文环境,解决zabbix页面显示中文问题 ############################" dnf install -y glibc-langpack-zh.x86_64 --allowerasing echo "############################ 启动Zabbix server和agent进程 ############################" systemctl enable zabbix-server zabbix-agent nginx php-fpm systemctl restart zabbix-server zabbix-agent nginx php-fpm echo "############################ firewalld防火墙放行80端口 ############################" firewall-cmd --add-port=80/tcp firewall-cmd --add-port=80/tcp --permanent echo "############################ 显示访问入口 ############################" server_interface=$(ip a|grep BROADCAST|awk '{print $2}'|awk -F ':' '{print $1}') server_ip=`ip -brief address show $server_interface | perl -F'\s+|\/' -nlae 'print $F[2]'` echo url:http:/$server_ip/ echo 数据库用户zabbix密码:$db_zabbix_password 数据库用户root密码:$db_root_password echo Web登录默认用户名:Admin Web登录默认密码:zabbix
Ubunut22.04使用国内清华源在线安装zabbix6.0.18LTS 基于MySQL和NGINX
- 脚本
#!/bin/bash # 1. 在Ubuntu22.04上测试通过 # 2. 使用root用户运行本脚本 # 3. zabbix为6.0.18 LTS版 ############################ 定义变量 ############################ db_password=China123 package_zabbix_url=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bubuntu22.04_all.deb ############################ 定义变量 ############################ dir=$(pwd) echo "############################ 安装zabbix仓库... ############################" wget $package_zabbix_url dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb echo "############################ 修改zabbix仓库为清华软件源... ############################" cat > /etc/apt/sources.list.d/zabbix.list <<-EOF # Zabbix main repository deb https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/ubuntu jammy main deb-src https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/ubuntu jammy main EOF cat > /etc/apt/sources.list.d/zabbix-agent2-plugins.list <<-EOF # Zabbix main repository deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix-agent2-plugins/1/ubuntu jammy main deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix-agent2-plugins/1/ubuntu jammy main EOF echo "############################ 更新软件源 ############################" apt-get clean all apt-get update echo "############################ 安装zabbix软件包 ############################" apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent echo "############################ 安装, 初始化mysql-server,创建zabbix初始数据库 ############################" apt -y install mysql-server echo 初始化数据库 db_username=$(cat /etc/mysql/debian.cnf |grep -m 1 user|awk '{print $3}') db_password1=$(cat /etc/mysql/debian.cnf |grep -m 1 password|awk '{print $3}') cat > $dir/db_init.txt <<-EOF create database zabbix character set utf8mb4 collate utf8mb4_bin; create user zabbix@localhost identified by '$db_password'; grant all privileges on zabbix.* to zabbix@localhost; set global log_bin_trust_function_creators = 1; flush privileges; EOF mysql -u$db_username -p$db_password1 < $dir/db_init.txt --connect-expired-password echo "############################ 安装Zabbix server,Web前端,agent ############################" apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent echo "############################ 恢复软件源 ############################" cp /etc/apt/sources.list.bak1 /etc/apt/sources.list apt-get clean all apt-get update echo "############################ 导入初始架构和数据 ############################" zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p$db_password zabbix cat > $dir/db_init2.txt <<-EOF set global log_bin_trust_function_creators = 0; EOF mysql -u$db_username -p$db_password1 < $dir/db_init2.txt --connect-expired-password echo "############################ 为Zabbix server配置数据库 ############################" sed -i "s/# DBPassword=/DBPassword=$db_password/" /etc/zabbix/zabbix_server.conf echo "############################ 为Zabbix前端配置PHP ############################" sed -i "s/^# listen 8080/ listen 8080/" /etc/zabbix/nginx.conf sed -i "s/^# server_name example.com/ server_name example.com/" /etc/zabbix/nginx.conf echo "############################ 添加中文环境,解决zabbix页面显示中文问题 ############################" locale-gen zh_CN.UTF-8 echo "############################ 启动Zabbix server和agent进程 ############################" systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm echo "############################ 访问入口 ############################" server_interface=$(ip a|grep BROADCAST|awk '{print $2}'|awk -F ':' '{print $1}') server_ip=`ip -brief address show $server_interface | perl -F'\s+|\/' -nlae 'print $F[2]'` echo url:http:/$server_ip:8080/ 默认用户名:Admin 默认密码:zabbix
Debian 12使用国内清华源在线安装zabbix7.0 LTS 基于PostgreSQL和nginx
- 安装脚本
#!/bin/bash # 设置数据库用户zabbix的密码 echo "" echo " Setup-1 Install Zabbix repository" DBP_zabbix_password="China123" # 安装zabbix仓库 wget -q https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest%2Bdebian12_all.deb dpkg -i zabbix-release_latest+debian12_all.deb apt-get update > /dev/null # 安装Zabbix server, frontend, agent等 echo "" echo " Setup-2 Install Zabbix server, frontend, agent" apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent > /dev/null #安装并初始化postgres数据库 echo "" echo " Setup-3 Create initial database" apt-get install -y postgresql sudo > /dev/null # 以 postgres 用户的身份创建一个名为 zabbix 的新数据库用户,并在创建过程中设置该用户的密码 sudo -u postgres psql -c "CREATE USER zabbix WITH PASSWORD '$DBP_zabbix_password';" # 以 postgres 用户的身份创建一个名为 zabbix 的新数据库,并将该数据库的所有者设置为 zabbix 用户 sudo -u postgres createdb -O zabbix zabbix # 允许zabbix用户登录到本机的所有IP地址 echo "host zabbix zabbix 0.0.0.0/0 scram-sha-256" >> /etc/postgresql/15/main/pg_hba.conf zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix echo "" echo " Setup-4 Configure the database for Zabbix server" sed -i "/# DBPassword=/a\\DBPassword=$DBP_zabbix_password" /etc/zabbix/zabbix_server.conf echo "" echo " Setup-5 Configure the nginx" sed -i "/^# listen 8080;/a\\ listen 8080;" /etc/zabbix/nginx.conf sed -i "/^# server_name example.com;/a\\ server_name localhost;" /etc/zabbix/nginx.conf systemctl restart zabbix-server zabbix-agent nginx php8.2-fpm postgresql systemctl enable zabbix-server zabbix-agent nginx php8.2-fpm # 测试数据库用户是否可以登录;手动输入密码测试:psql -h 127.0.0.1 -U zabbix -d zabbix echo "" echo " Setup-6 Test database user:zabbix" export PGPASSWORD=$DBP_zabbix_password PGUSER=zabbix psql -h 127.0.0.1 -d zabbix -c "SELECT 1;" > /dev/null if [ $? -eq 0 ]; then echo "使用zabbix登录数据库成功" else echo "使用zabbix登录数据库失败, 返回码: $?" fi echo "" echo "登录地址:http://你的服务器IP:8080" echo "初次登录Web页面时需要输入zabbix数据库, zabbix用户的密码:$DBP_zabbix_password" echo "Web登录默认用户名:Admin;默认密码:zabbix"
Zabbix 概述
- SNMP
- NMS
监控端 - agent
被监控端
- NMS
- Zabbix 组成
- Zabbix Server
负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行 - Database Storage
用于存储所有配置信息,以及由zabbix收集的数据 - Web interface
zabbix的GUI接口,通常与Server运行在同一台主机上 - Proxy
可选组件,常用于分页监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端 - Agengt
部署在被监控主机上,负责收集本地数据并发往Server端或Porxy端
- Zabbix Server
- Zabbix常用术语
- 主机(host)
要监控的网络设备,可由IP或DNS名称指定 - 主机组(host group)
主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用 - 监控项(item)
一个特定监控指标的相关的数据,这些数据来自于被监控对象;对于item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由"key"进行标识 - 触发器(trigger)
一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据量再次回归到合理范围时,其状态将从"Problem"转换回"OK" - 事件(event)
即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等 - 动作(action)
指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作) - 报警升级(escalation)
发送警报或执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等 - 媒介(media)
发送通知的手段或通道,如EMAIL是Jabber或SMS等 - 通知(notification)
通过选定的媒介向用户发送的有关某事件的信息 - 远程命令(remote command)
预定义的命令,可在被监控主机处于特定条件下时自动执行 - 模板(template)
用于快速定义被监控主机的预设条目集合,通常包含了item,trigger,graph,screen,application以及low-level discovery rule;模板可以直接链接至单个主机 - 应用程序(application)
一组item的集合 - web场景(web scennario)
用于检测web站点可用性的一个或多个http请求 - 前端(frontend)
Zabbix的web接
- 主机(host)
Zabbix 组件
zabbix 文件
- zabbix文件
文件 位置 zabbix-server配置文件 /etc/zabbix/zabbix_server.conf 服务端日志 /var/log/zabbix/zabbix_server.log agent日志 /var/log/zabbix/zabbix_agentd.log
Zabbix Agent
Zabbix Agent 安装
- Windows
- 下载安装包:zabbix_agents_3.4.6.win.zip
- 解压:解压相应的程序:zabbix_sender.exe,zabbix_get.exe,zabbix_agentd.exe和配置文件zabbix_agentd.win。比如放到C:\zabbix
- 编辑zabbix_agentd.win配置文件:编辑hostname和服务器地址
- 安装并启动服务
zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -i zabbix_agentd.exe --start
- 常用相关命令
命令 解释 zabbix_agentd.exe --config <your_configuration_file> --start 开始一个单独的实例,用另外一个配置文件。 zabbix_agentd.exe --config <configuration_file_for_this_instance> --start --multiple-agents 开始多个实例 zabbix_agentd.exe --stop 停止agent. zabbix_agentd.exe --config <configuration_file_for_this_instance> --stop --multiple-agents 停止多个实例。 zabbix_agentd.exe --uninstall 用默认配置文件卸载agent zabbix_agentd.exe --config <your_configuration_file> --uninstall 用不是默认的配置文件卸载agent
- Linux
- Centos7安装
rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm yum install -y zabbix-agent systemctl enable zabbix-agent systemctl start zabbix-agent
- 文件配置
vm /etc/zabbix/zabbix_agentd.conf Server=192.168.18.154 (用于被动模式,允许哪台服务器可以拉取本机数据) ServerActive=192.168.18.154 (用于主动模式,指定将信息推送到哪台server上) Hostname:zabbix server 指定当前主机主机名,server端通过此参数识别 EnableRemoteCommands=1 是否允许在远程agent上执行命令
- 配置文件:/etc/zabbix/zabbix_agentd.conf.
- Server=服务器IP地址
- 启动agent:/etc/init.d/zabbix_agent start
- Centos7安装
- Zabbix agent 常用命令
功能 命令 查看配置文件,过滤和注释 more /etc/zabbix/zabbix_agentd.conf 查看日志 tail -n 20 /var/log/zabbix/zabbix_agentd.log
zabbix agent监控项
- CPU使用率
- 选择配置-模板-Template OS Windows-监控项-创建监控项-名称:CPU使用率-类型:zabbix客户端-键值:system.cpu.util[,]-信息类型:浮点数-单位:%-添加,再添加图形.
zabbix服务端
Zabbix Appliance
- 访问:http://IP/ zabbix 用户名:Admin 密码:zabbix
- 如果控制台不显示,Ctrl+Alt+F2切换tty会话
- 默认情况下,设备使用DHCP获取IP地址
- IP设置文件:/etc/network/interfaces
#配置文件 auto ens18 iface ens18 inet static address 192.168.99.254 netmask 255.255.255.0 gateway 192.168.99.1 #重启网卡 sudo ifdown eth0 && sudo ifup eth0 #DNS文件:/etc/resolv.conf nameserver 114.114.114.114
- 改时区:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
默认的用户名和密码: - 系统账号:appliance 密码:zabbix
root账号:使用"sudo su"命令后,使用appliance账号的密码 - 数据库:
root:密码在随机文件中
zabbix:密码在随机文件中
密码随机文件:/root/.my.cnf
zabbix 配置
zabbix 配置邮件报警
- 禁用postfix,安装并设置’mailx’
systemctl stop postfix systemctl disable postfix yum install mailx cp /etc/mail.rc /etc/mail.rc.bak vi /etc/mail.rc #末尾增加内容 set from=liujinbao3000@139.com set smtp=smtp.139.com set smtp-auth-user=liujinbao3000@139.com set set smtp-auth-password=邮箱密码 set smtp-auth=login #测试mailx echo "zabbix-test"|mailx -s "Zabbix-test" liujinbao3000@139.com
- 创建邮件告警脚本
yum install -y dos2unix #!/bin/bash SENT_TO=$1 SENT_SUBJECT=$2 SENT_CONTENT="/tmp/alert_$$.tmp" echo "$3">$SENT_CONTENT dos2unix $SENT_CONTENT #echo "$SENT_CONTENT"|mailx -s "$SENT_SUBJECT" $SENT_TO mailx -s "$SENT_SUBJECT" $SENT_TO<$SENT_CONTENT
- 创建报警媒介
- 管理-报警媒介类型-创建报警媒介
- 名称:邮件告警
- 类型:脚本
- 脚本名称:mail.sh
- 脚本参数:
- {ALERT.SENDTO}
- {ALERT.SUBJECT}
- {ALERT.MESSAGE}
- 勾选"已启用"-添加
- 设置用户
- 管理-用户-点击要设置的用户-报警媒介-添加-刚建的"邮件告警"-写收件人-选告警级别,勾选"已启用"-添加-更新
- 设置动作
- 配置-动作-事件源选"触发器"-创建动作-名称:邮件告警发送-新的触发条件:问题已被制止-不-添加-新的解发条件:触发器示警度-大于等于-警告-添加-计算方式:A and B-
- 操作
- 默认标题:故障{TRIGGER.STATUS},主机:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
- 消息内容
问题发生 名称: {EVENT.NAME} 问题发生 主机: {HOST.NAME} 问题发生 ID: {EVENT.ID} 问题发生 值: {EVENT.VALUE} 问题发生 状态: {EVENT.STATUS} 问题发生 时间: {EVENT.TIME} 问题发生 日期: {EVENT.DATE} 问题发生时长: {EVENT.AGE} 问题发生确认: {EVENT.ACK.STATUS} 问题发生历史: {EVENT.UPDATE.HISTORY}
- 暂停操作以制止问题 勾选
- 操作-新的-操作类型:发送信息-添加用户组-仅送到:邮件告警-条件-新的-事件已确认-等于-非确认-添加
- 恢复操作
- 默认标题
恢复{TRIGGER.STATUS},主机:{HOSTNAME1}发生:{TRIGGER.NAME}已恢复,持续时间:{EVENT.DURATION}
- 消息内容
问题恢复名称:{EVENT.RECOVERY.NAME} 问题恢复主机: {HOST.NAME} 问题恢复 ID: {EVENT.RECOVERY.ID} 问题恢复 value: {EVENT.RECOVERY.VALUE} 问题恢复 status: {EVENT.RECOVERY.STATUS} 问题恢复 time: {EVENT.RECOVERY.TIME} 问题恢复 date: {EVENT.RECOVERY.DATE} 问题发生到恢复时间:{EVENT.DURATION}
- 操作:添加方法同上
- 添加
- 默认标题
zabbix 配置邮件报警
- 报警媒介类型
zabbix 监控项
监控项类型
- 可计算监控项
- 语法
func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)
- 参数
参数 定义 func 触发器表达式支持的函数: last, min, max, avg, count等 key 另一监控项的键值,该键值的数据是你想要使用的。 它可以被定义为 key 或者 hostname:key。注意: 强烈建议将整个键放在双引号(“…”)中,以避免由于键内的空格或逗号而导致错误的解析。\如果键中也有引用的参数,那么必须使用反斜杠()来转义这些双引号。 请参考下文的 示例 5 。 parameter(s) 功能参数(如果需要) - 示例
功能 示例 计算根分区上可用磁盘空间的百分比 100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]")
计算Zabbix处理的数值的10分钟的平均值 avg("Zabbix Server:zabbix[wcache,values]",600)
计算eth0的总带宽 last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]")
计算入站流量的百分比 100*last("net.if.in[eth0,bytes]")/(last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]"))
在可计算监控项中正确使用聚合 last("grpsum[\"video\",\"net.if.out[eth0,bytes]\",\"last\"]") / last("grpsum[\"video\",\"nginx_stat.sh[active]\",\"last\"]")
- 语法
简单监控
- ICMP监控
- 官方文档
- fping
- 安装fping
yum install -y fping
- 查看zabbix中fping设置的路径
vi /etc/zabbix/zabbix_server.conf #查看FpingLocation项路径,保持跟系统中fping的路径一致
- 设置fping权限
chown root:zabbix /usr/sbin/fping && chmod 4710 /usr/sbin/fping
- 修改/etc/passwd中zabbix账户的登录shell为bash.并切换到zabbix用户测试fping命令
- 安装fping
- 增加ICMP的监控项
- 如果要监控一个IP地址,可增加主机,接口为客户端(不需要安装agent),设置好简单监控的模板,在最新数据中查看结果
- 进入特定模板-创建监控项-名称:ping延时-类型:简单检查-键值:
icmppingsec[,20,200,64,2000,avg]
-表示:目标默认为本主机,发送20个包,间隔200毫秒,包大小64,超时2秒(fping v4.x不能超过2000),展示平均值-用户名密码无-信息类型:浮点数-单位:ms-更新间隔30秒-预处理-添加-自定义倍数-参数:1000-更新 - 图片预览
Web监控
- 配置–主机–主机群组–添加主机群组–名称:服务器
- 配置–模板–创建模板–模板名称:http_status–群组选择刚才创建的主机群组:服务器–Web场景–创建Web场景–名称:http_code–客户端(选择Microsoft Edge 80)–步骤----添加步骤–名称:青龙面板_状态–URL:http://192.168.99.251:5700–要求的状态码:200–添加–图形–添加图形–名称:青龙面板_状态–图形下的监控项–添加-选择Response code的那项–添加–添加
- 配置–主机–主机名称:Schedule–群组选择刚刚创建的"服务器"群组–添加
- 配置–主机–模板–群组选择刚才创建的主机群组:服务器–刚刚创建的模板:http_status–更新
- 配置–主机–指定主机的触发器–创建触发器–名称:青龙面板状态异常–严重性(根据需要选择)–表达式–添加–监控项–选择刚才创建的"Download speed for scenario “http_code”"项–结果=0–插入
- 如果选择"Response code for step"的监控项,最近一次值一直都是200,如果不能访问了,不能获取值,但最后一次的值不改变,所以可能不会触发
- 查看方法:监测–主机–指定主机的图形或Web监测
snmp trap
- zabbix-server主机上的snmptrapd服务监控udp162端口,接收trap信息
- snmptrapd服务上配置是将trap信息交给perl脚本、shell脚本、或者snmptt服务
- zabbix-server的配置文件中开启:StartSNMPTrapper=1;并且指定配置文件,如果使用perl脚本,要跟脚本中定义的日志文件一致
- 在zabbix-web中增加监控项,注意snmptrap监控项不能主动获取数据,只能被动接收数据
Ubunut22.04 Zabbix6.0.17 LTS 环境
- 配置被监控端(以华为5700交换机为例
sys snmp-agent sys-info version v2c v3 snmp-agent community read cipher China123snmp snmp-agent trap enable # 指定snmptrap信息要发送的主机,到此主机的udp162端口要可以正常通行。注意最后的snmp版本最好不要省略 snmp-agent target-host trap address udp-domain 192.168.5.253 params securityname cipher China123snmp v2c
- 在zabbix-server上测试是否可以收到trap信息
# 使用tcpdump抓取trap包 tcpdump udp port 162 and host 192.168.7.143 # 在被监控端,shutdown一个端口,查看以上命令是否抓取到trap信息
- 安装,配置软件包
#!/bin/bash ######################## 设置变量 ######################## SNMP_COMMUNITY=China123snmp # perl脚本在源码包中的位置:misc/snmptrap/zabbix_trap_receiver.pl zabbix_trap_receiver=https://raw.githubusercontent.com/zabbix/zabbix/master/misc/snmptrap/zabbix_trap_receiver.pl zabbix_trap_receiver=http://132.226.235.202:8080/downloads/zabbix_trap_receiver.pl ######################## 设置变量 ######################## # 安装软件包 apt install -y snmptrapd libnet-snmp-perl libsnmp-perl # 修改snmptrapd配置文件 ## 如果省略团体字,则接收所有团体字 sed -i "/^#authCommunity log,execute,net public/a\authCommunity log,execute,net $SNMP_COMMUNITY" /etc/snmp/snmptrapd.conf sed -i '/^authCommunity log,execute,net/a\perl do "/usr/bin/zabbix_trap_receiver.pl"' /etc/snmp/snmptrapd.conf # 修改zabbix_trap_receiver.pl中的日志文件跟/etc/zabbix/zabbix_server.conf中一致 # 下载zabbix_trap_receiver的perl脚本,最好下载对应zabbix-server的源码包,在源码包中提取,确保版本一致 wget $zabbix_trap_receiver -O /usr/bin/zabbix_trap_receiver.pl chmod a+x /usr/bin/zabbix_trap_receiver.pl sed -i "/^\$SNMPTrapperFile = /c\$SNMPTrapperFile = '/var/log/snmptrap/snmptrap.log';" /usr/bin/zabbix_trap_receiver.pl # 在/etc/zabbix/zabbix_server.conf在启用StartSNMPTrapper sed -i "/^# StartSNMPTrapper=0/a\StartSNMPTrapper=1" /etc/zabbix/zabbix_server.conf # 创建snmptrap日志文件,并设置权限 mkdir -p /var/log/snmptrap/ touch /var/log/snmptrap/snmptrap.log chmod 777 /var/log/snmptrap/snmptrap.log systemctl restart zabbix-server systemctl enable snmptrapd # 确定snmptrap服务可以正常启动,并且没有报错信息 systemctl restart snmptrapd systemctl status snmptrapd
- 在官方的源码包中复制出perl脚本
- perl脚本在源码包中的位置:misc/snmptrap/zabbix_trap_receiver.pl
- 复制perl脚本到/usr/bin目录
cp misc/snmptrap/zabbix_trap_receiver.pl /usr/bin chmod a+x /usr/bin/zabbix_trap_receiver.pl
CentOS7 Zabbix4.2.7 测试环境
Zabbix Server端开启snmp-trap
- 安装软件包
- 下载源码包获取per脚本
- 修改snmptrap配置文件
- 查看snmptrap服务是否正常启动
- 查看并记录perl脚本中日志文件路径
- 修改zabbix-server配置文件:1.snmp日志文件路径;2.允许SNMp trapper进程启动
- 重启zabbix-server服务,并查看有没有报错
- 如果开启防火墙的话放行UDP:162端口
- 命令
yum -y install net-snmp net-snmp-utils net-snmp-perl wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.2.7/zabbix-4.2.7.tar.gz tar zxvf zabbix-4.2.7.tar.gz cp zabbix-4.2.7/misc/snmptrap/zabbix_trap_receiver.pl /usr/bin sed -i "/^# authCommunity/cauthCommunity log,execute,net public" /etc/snmp/snmptrapd.conf echo 'perl do "/usr/bin/zabbix_trap_receiver.pl"' >> /etc/snmp/snmptrapd.conf systemctl restart snmptrapd systemctl enable snmptrapd systemctl status snmptrapd grep '$SNMPTrapperFile =' /usr/bin/zabbix_trap_receiver.pl sed -i "/^SNMPTrapperFile=/cSNMPTrapperFile=/tmp/zabbix_traps.tmp" /etc/zabbix/zabbix_server.conf sed -i "/^# StartSNMPTrapper=0/cStartSNMPTrapper=1" /etc/zabbix/zabbix_server.conf systemctl restart zabbix-server systemctl status zabbix-server firewall-cmd --add-port=162/udp firewall-cmd --add-port=162/udp --permanent
被监控设备端 (以Centos7 安装SNMp为例)
- 安装软件包
- 向zabbix-server发送测试信息
- 命令
yum -y install net-snmp-utils snmptrap -v 2c -c public 192.168.99.203 "agent-test" '1.3.6.1.4.1.67' SNMPv2-MIB::sysName.0 s "SNMP Trap test"
- 在zabbix-server端查看snmptrap日志
cat /tmp/zabbix_traps.tmp
zabbix-server端配置snmp-trap监控项
- snmp trap 类型的监控项在手工"立即执行"时会报错"错误的监控项类型,请求无法发送
- 个人理解为:snmp trap类型不能主动发送请求,只能被动接收信息。
- 键值"snmptrap[]",可以匹配接收所有信息;"snmptrap.fallback"可以匹配所有未被匹配的信息。
- 如果信息类型为"日志"获取不到信息,可尝试修改为"文本",如果"文本"可以收到信息,可能是"日志时间格式"跟traphandle(perl脚本,shell脚本,snmptt)中设置的不一致。
zabbix 宏
-
宏的分类
- 系统宏变量 :
{宏变量}
- 用户自定义宏变量:
{$宏变量}
- 自动发现宏变量:
{#宏变量}
- 宏变量函数
- regsub:区分大小写
- iregsub:不区分大小写
- 系统宏变量 :
-
系统宏
- 常用的宏
宏 解释 {ACTION.NAME} action的名称 {DATE} 当前时间使用 yyyy.mm.dd格式。 {DISCOVERY.DEVICE.STATUS} 被发现设备的状态。: 可能是UP 或 DOWN. {DISCOVERY.SERVICE.PORT} 被发现服务的端口 {EVENT.ACK.STATUS} 事件的确认状态。(Yes/No). {EVENT.AGE} 触发动作的事件持续时间 {EVENT.DATE} 触发动作的事件发生日期 {EVENT.NSEVERITY} 事件的级别。 可能的值: 0 - 未知, 1 - 信息, 2 - 警告, 3 - 普通, 4 - 高, 5 - 灾难 {EVENT.RECOVERY.DATE} 恢复事件的发生时间 {EVENT.RECOVERY.TIME} 恢复事件的时间。 {EVENT.SEVERITY} 事件的级别 {EVENT.STATUS} 触发动作的事件状态 {EVENT.TIME} 触发动作的事件时间 {EVENT.VALUE} 触发动作的事件类型 (1 为故障, 0 为恢复)。 {HOST.DESCRIPTION<1-9>} 设备描述 {HOST.HOST<1-9>} Host name. {ITEM.KEY<1-9>} 触发器表达式中导致发送通知的第N个item的key {ITEM.LASTVALUE<1-9>} 触发器表达式中导致发送通知的第N个item的最近一个值
- 常用的宏
-
用户自定义的宏
- 定义位置
管理-一般-右侧菜单:宏
- 定义位置
-
宏变量函数
- 示例
- 语法:
{{监控项的值.regsub("匹配正则表达式",匹配后显示的内容)}}
- 当监控项的值为0时显示"宏变量正常"{{ITEM.VALUE}.regsub(“0”,宏变量正常)}
- 语法:
- 示例
zabbix 触发器
grafana 图形化展示
- 简介
- 官网
- 下载
- 插件
grafana安装
- grafana Centos安装
wget https://dl.grafana.com/oss/release/grafana-6.3.4-1.x86_64.rpm sudo yum localinstall grafana-6.3.4-1.x86_64.rpm
- zabbix插件安装
grafana-cli plugins install alexanderzobnin-zabbix-app systemctl restart grafana-server systemctl enable grafana-server
- grafana 密码重置
sudo grafana-cli admin reset-admin-password xxxxxxxx
- 启用插件
- http://192.168.99.254:3000/plugins 进入web,雇用zabbix插件,第一次登录用户名密码都是
admin
,首次登录后更改密码 - http://192.168.99.254:3000/datasources/new 添加zabbix数据库
- MYSQL数据库
- Name:MySQL-zabbix
- Database:zabbix
- User:zabbix
- Password:数据库密码
- Save&Test
- MYSQL数据库
- http://192.168.99.254:3000/datasources/new 添加zabbix数据源
- Name:自定义
- URL:http://192.168.99.254/zabbix/api_jsonrpc.php (默认IP处是localhost不行,需要改成IP;如果不是80端口需要加上端口)
- Access:Browser
- Username:Admin
- Password:zabbix(zabbix登录密码)
- Zabbix version:4.x
- Direct DB Connection:允许并选择上面新建的MySQL-zabbix数据库
- Save&Test
- http://192.168.99.254:3000/plugins 进入web,雇用zabbix插件,第一次登录用户名密码都是
grafana 变量使用
- 引用变量$变量名
- 普通字符串变量
进入Dashboard settings-Variables-new-Name:DaiKuan_KeHu_BaiDu_CDN1-Type:Text box-Hide:Varible-Default value:200G-Add
Zabbix拓扑图
- 官方文档
- 在Zabbix的拓扑图中,打开"展开宏"功能,增加链接,在标签中使用特定格式,可以显示出监控项的值
- 效果预览
- 标签格式
核心1:Eth-Trunk6: ↓{?last(/192.168.0.130/net.if.in[ifHCInOctets.116])} ↑{?last(/192.168.0.130/net.if.out[ifHCOutOctets.116])}
Zabbix 官方python库 zabbix_utils
zabbix_utils 介绍
- pypi
- 官方介绍文档
- github api示例
zabbix_utils 安装
- 使用pip
pip install zabbix_utils
- 使用github
git clone https://github.com/zabbix/python-zabbix-utils cd python-zabbix-utils/ python setup.py install
zabbix_utils 使用
环境变量
- ABBIX_URL、ZABBIX_TOKEN、ZABBIX_USER ZABBIX_PASSWORD
用户认证
- 使用用户名和密码
- 代码
from zabbix_utils import ZabbixAPI api = ZabbixAPI( url="192.168.99.254", user="Admin", password="China123" )
- 代码
- 使用token
- 代码
from zabbix_utils import ZabbixAPI api = ZabbixAPI(url="192.168.99.254") api.login(token="bdidc")
- 代码
Zabbix API
- 调用 API 方法的格式
api_instance.zabbix_object.method(parameters)
- 调用实例
hosts = api.host.get() # 获取所有主机信息 # 显示所有主机的hostid、host、name for host in hosts: for key,value in host.items(): if key in ["hostid","host","name"]: print(key,value) print("*"*100) api.logout() # 退出登录
APIVersion 对象
- API的版本
- 代码
print("查询zabbix API的版本") ver = api.version print(type(ver).__name__, ver) print() print("ver对象的其它用法") print(ver.major) # 6.0 print(ver.minor) # 4 print(ver.is_lts()) # True print() print("版本比较") print(ver < 6.4) # True print(ver != 6.0) # False print(ver != "6.0.5") # True
host 主机
- 查看所有主机的所有信息
- 即不使用过滤
- 代码
hosts = api.host.get() # 获取所有主机信息 # 显示所有主机的hostid、host、name for host in hosts: for key,value in host.items(): print(key,value) print("*"*100)
- 查看指定主机的指定信息
- 即使用过滤
- 代码
hosts = api.host.get( filter={'name': 'RT01'}, output=['hostid','host','status','name'] ) # 获取所有主机信息 # 显示所有主机的hostid、host、name for host in hosts: for key,value in host.items(): print(key,value) print("*"*100)
items 监控项
- 不使用过滤参考上面的host 主机
- 查看指定主机的所有监控项
- 查看指定主机的指定监控项
- 先要根据上面的host查出指定主机的hostid
- itemid不方便查询,可使用zabbix的键值过滤,关键字为"key_";如:‘key_’: “net.if.out[ifHCOutOctets.BC]”
- 代码
items = api.item.get( filter={'hostid': 10519, # 只显示指定的监控主机 'itemid': 46811 # 只显示指定的监控项 }, output=['hostid','name','lastvalue'] ) for i in items: for key,value in i.items(): print(key,value) print("*"*100)
获取指定主机监控项周期最大值
- 默认为昨天的00:00:00到昨天的23:59:59,可修改
- 代码
import time from datetime import datetime,timedelta from zabbix_utils import ZabbixAPI def get_max_value(hostname,item_name,time_start,time_end): # 根据hostname获取hostid hosts = api.host.get( filter={'name': hostname}, output=['hostid'] ) hostid = hosts[0].get('hostid') # 根据hostid获取itemid items = api.item.get( filter={'hostid': hostid, # 只显示指定的监控主机 'name': item_name # 只显示指定的监控项 }, output=['hostid','name'] ) itemid = items[0].get('itemid') # 将字符串转换为datetime对象 dt_obj_start = datetime.strptime(time_start, '%Y-%m-%d %H:%M:%S') dt_obj_end = datetime.strptime(time_end, '%Y-%m-%d %H:%M:%S') # 转换为Unix时间戳 timestamp_start = int(time.mktime(dt_obj_start.timetuple())) timestamp_end = int(time.mktime(dt_obj_end.timetuple())) # 获取监控项历史数据 history = api.history.get( itemids=[itemid], time_from=timestamp_start, time_till=timestamp_end, output='extend', sortfield='clock', sortorder='DESC' ) # 找到最大值 if history: max_value = max(float(entry['value']) for entry in history) else: max_value = None return max_value if __name__ == "__main__": api = ZabbixAPI(url="192.168.99.254",user="Admin",password="China123") hostname = "RT01" item_name_bc = "出口_BC方向:出流量" # zabbix监控项的名称,每个监控主机上唯一 item_name_pb = "出口_PB方向:出流量" # zabbix监控项的名称,每个监控主机上唯一 # 开始时间和结束时间 now = datetime.now() # 现在时间,包括日期和时间 start_time0 = now + timedelta(days=-1) #days=表示今天加几天,负数表示几天前,正数表示几天后 end_time0 = now + timedelta(days=-1) #结束时间 time_start = start_time0.strftime('%Y-%m-%d 00:00:00') # 开始时间为当前时间,日期为N天前 time_end = end_time0.strftime('%Y-%m-%d 23:59:59')# 结束时间为当前时间,日期为今日日期 #time_start = "2024-07-08 00:00:00" # 开始时间为当前时间,日期为N天前 #time_end = "2024-07-08 23:59:59"# 结束时间为当前时间,日期为今日日期 max_value_BC_Out = get_max_value(hostname,item_name_bc,time_start,time_end) max_value_PB_Out = get_max_value(hostname,item_name_pb,time_start,time_end) print(f"{item_name_bc}利用率:{str('{:.2%}'.format(max_value_BC_Out/1600000000000))}") print(f"{item_name_pb}利用率:{str('{:.2%}'.format(max_value_PB_Out/3200000000000))}")
Zabbix常见问题
Zabbix中的历史数据和趋势数据
- 历史数据(history)和趋势数据(trends)是Zabbix中存储收集到的数据的两种方式。
- 历史数据:每一个收集到的监控数据,
- 趋势数据:按小时统计计算的平均值数据
将Zabbix语言改成中文
- 默认Zabbix支持中文,但是如果Linux系统不支持中文,那Zabbix的中文是灰色,不能更改.
- 查看系统的当前语言
echo $LANG
- 如果不支持需要安装中文
apt-get install -y language-pack-zh-hans reboot
Zabbix "图形"下中文乱码
- 在Windows系统的c:\windows\fonts目录中复制"黑体-常规"字体文件(不是所有中文字体都可以)
- 把复制的“simhei.ttf”复制到zabbix server的/usr/share/zabbix/assets/fonts目录中,并替换字体
- 目录不一定正确请使用find命令查找defines.inc.php文件确认
sudo sed -i 's/DejaVuSans/simhei/g' /usr/share/zabbix/include/defines.inc.php
- 在Zabbix "图形"页面刷新即可
安装snmp工具snmpwalk
- Centos
yum -y install net-snmp-utils
- ubuntu
apt install -y snmp
zabbix fping配置
- 安装fping
- 修改fping的权限
chown root:root /usr/bin/fping chmod u+s /usr/bin/fping
时区修改故障
- 修改 /etc/zabbix/apache.conf文件 Asia/Shanghai时区后,重启服务sudo systemctl restart zabbix-server,还是提示时区错误:修改的地方有两处,一处不生效,修改另一处后,重启,正常。
zabbix-server启动故障
- 在WEB页面中zabbix-server显示没有启动,但服务实际上已经启动。sudo netstat -ntpl | grep zabbix查看,只看到agent的10050端口。看不到server的10051端口。/etc/zabbix/zabbix_server.conf文件中的DBPassword=zabbix没有设置成功,重新设置,保存文件,重启服务后,正常。