zabbix 学习笔记

文章目录

  • 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

  1. 添加阿里云的源(只用官方源,安装zabbix的时候会出错)
    vi /etc/apt/sources.list.d/aliyun.list
    
  2. 文件内容
    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
    
  3. 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 
  1. 安装Zabbix
    sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-agent
    
  2. 初始化数据库(初始没有密码,直接回车)
    mysql -uroot -p
    create database zabbix character set utf8 collate utf8_bin;
    grant all privileges on zabbix.* to zabbix@localhost identified by 'China123';
    quit
    
  3. 导入数据用上面设置的密码"China123",输入密码后等待时间有点长,直到出现命令提示符.
    zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
  4. 为Zabbix配置数据库
    vi /etc/zabbix/zabbix_server.conf
    DBPassword=China123
    
  5. 为Zabbix时区配置PHP(注意:在mod_php7.c下)
    vi /etc/zabbix/apache.conf
    php_value date.timezone Asia/Shanghai
    
  6. 启动Zabbix server和Zabbix agent进程
    systemctl restart zabbix-server zabbix-agent apache2
    systemctl enable zabbix-server zabbix-agent apache2
    
  7. 访问Zabbix
    `http://IP/zabbix
  8. 配置页面只需要输入密码"China123"其它默认
  9. 访问用户:Admin 密码:zabbix

Centos7 安装Zabbix3.4

  1. 基本环境
    1. IP地址:需要有IP地址
    2. 关闭Linux防火墙
      systemctl stop firewalld.service
      systemctl disable firewalld.service
      
    3. 关闭selinux,
      sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  2. 安装mysql.现在叫mariadb
    yum install mariadb-server mariadb -y
  3. 安装配置文件
    rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
  4. 安装 Zabbix server, frontend, agent
    yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent
  5. 启动数据库服务
    systemctl start mariadb
  6. 初始化数据库
    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  //退出数据库设置
    
  7. 用设置的密码”zabbix”初始化数据
    zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix
  8. 配置zabbix server的数据库
    vi /etc/zabbix/zabbix_server.conf
    DBPassword=Zabbix
    
  9. 设置php的zabbix时区
    /etc/httpd/conf.d/zabbix.conf, 
    php_value date.timezone Asia/Shanghai
    
  10. 修改一些zabbix的默认配置
    vi /etc/Zabbix/Zabbix_server.conf
    LogFileSize=10
    DebugLevel=3
    DBHost=localhost
    
  11. 开启agent进程
    systemctl restart zabbix-server zabbix-agent httpd
    systemctl enable zabbix-server zabbix-agent httpd
    

Centos7 安装zabbix4.2

  1. 基本环境
    1. IP地址:需要有IP地址
    2. 关闭Linux防火墙
      systemctl stop firewalld.service
      systemctl disable firewalld.service
      
    3. 关闭selinux,
      sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  2. 安装mysql.现在叫mariadb
    yum install mariadb-server -y
    systemctl enable mariadb
    systemctl restart mariadb
    
  3. 安装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
    
  4. 设置数据库
    1. 创建数据库
    2. 设置密码权限
    3. 导入数据库(输入新密码)
    4. 设置Zabbix server数据库密码
    5. 配置时区
    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

  1. 脚本
    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

  1. 官方文档
  2. 使用root账户
  3. 安装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
    
  4. 安装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
    
  5. 安装并初始化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
    
  6. 修改配置文件
  7. 密码为:China123
  8. 服务端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
    
  9. 重启服务并设置开机启动
    systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
    systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm
    
  10. 登录zabbix
    1. 登录地址:http://IP;用户名:Admin;密码:zabbix
    2. 如果没有中文可能是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
      
  11. 解决zabbix图形监控中文乱码
    1. 在c:\windows\fonts中搜索“微软雅黑”
    2. 复制出来,是两个文件“msyh.ttf”和“msyhbd.ttf”
    3. 将两个文件上传到zabbix服务器
    4. 查找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

  1. 在禁用selinux环境下测试通过
  2. 脚本
    #!/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

  1. 脚本
    #!/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

  1. 安装脚本
    #!/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 概述

  1. SNMP
    1. NMS
      监控端
    2. agent
      被监控端
  2. Zabbix 组成
    1. Zabbix Server
      负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行
    2. Database Storage
      用于存储所有配置信息,以及由zabbix收集的数据
    3. Web interface
      zabbix的GUI接口,通常与Server运行在同一台主机上
    4. Proxy
      可选组件,常用于分页监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端
    5. Agengt
      部署在被监控主机上,负责收集本地数据并发往Server端或Porxy端
  3. Zabbix常用术语
    1. 主机(host)
      要监控的网络设备,可由IP或DNS名称指定
    2. 主机组(host group)
      主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用
    3. 监控项(item)
      一个特定监控指标的相关的数据,这些数据来自于被监控对象;对于item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由"key"进行标识
    4. 触发器(trigger)
      一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据量再次回归到合理范围时,其状态将从"Problem"转换回"OK"
    5. 事件(event)
      即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等
    6. 动作(action)
      指对于特定事件事先定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)
    7. 报警升级(escalation)
      发送警报或执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等
    8. 媒介(media)
      发送通知的手段或通道,如EMAIL是Jabber或SMS等
    9. 通知(notification)
      通过选定的媒介向用户发送的有关某事件的信息
    10. 远程命令(remote command)
      预定义的命令,可在被监控主机处于特定条件下时自动执行
    11. 模板(template)
      用于快速定义被监控主机的预设条目集合,通常包含了item,trigger,graph,screen,application以及low-level discovery rule;模板可以直接链接至单个主机
    12. 应用程序(application)
      一组item的集合
    13. web场景(web scennario)
      用于检测web站点可用性的一个或多个http请求
    14. 前端(frontend)
      Zabbix的web接

Zabbix 组件

zabbix 文件

  1. 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 安装

  1. Windows
    1. 下载安装包:zabbix_agents_3.4.6.win.zip
    2. 解压:解压相应的程序:zabbix_sender.exe,zabbix_get.exe,zabbix_agentd.exe和配置文件zabbix_agentd.win。比如放到C:\zabbix
    3. 编辑zabbix_agentd.win配置文件:编辑hostname和服务器地址
    4. 安装并启动服务
      zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -i
      zabbix_agentd.exe --start
      
    5. 常用相关命令
      命令解释
      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
  2. Linux
    1. 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
      
    2. 文件配置
      vm  /etc/zabbix/zabbix_agentd.conf
      Server=192.168.18.154      (用于被动模式,允许哪台服务器可以拉取本机数据)
      ServerActive=192.168.18.154  (用于主动模式,指定将信息推送到哪台server上)
      Hostname:zabbix server   指定当前主机主机名,server端通过此参数识别
      EnableRemoteCommands=1 是否允许在远程agent上执行命令
      
    3. 配置文件:/etc/zabbix/zabbix_agentd.conf.
      1. Server=服务器IP地址
      2. 启动agent:/etc/init.d/zabbix_agent start
  3. Zabbix agent 常用命令
    功能命令
    查看配置文件,过滤和注释more /etc/zabbix/zabbix_agentd.conf
    查看日志tail -n 20 /var/log/zabbix/zabbix_agentd.log

zabbix agent监控项

  1. CPU使用率
    1. 选择配置-模板-Template OS Windows-监控项-创建监控项-名称:CPU使用率-类型:zabbix客户端-键值:system.cpu.util[,]-信息类型:浮点数-单位:%-添加,再添加图形.

zabbix服务端

Zabbix Appliance

  1. 访问:http://IP/ zabbix 用户名:Admin 密码:zabbix
  2. 如果控制台不显示,Ctrl+Alt+F2切换tty会话
  3. 默认情况下,设备使用DHCP获取IP地址
  4. 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
    
  5. 改时区:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    默认的用户名和密码:
  6. 系统账号:appliance 密码:zabbix
    root账号:使用"sudo su"命令后,使用appliance账号的密码
  7. 数据库:
    root:密码在随机文件中
    zabbix:密码在随机文件中
    密码随机文件:/root/.my.cnf

zabbix 配置

zabbix 配置邮件报警

  1. 禁用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
    
  2. 创建邮件告警脚本
    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
    
    
  3. 创建报警媒介
    1. 管理-报警媒介类型-创建报警媒介
    2. 名称:邮件告警
    3. 类型:脚本
    4. 脚本名称:mail.sh
    5. 脚本参数:
      1. {ALERT.SENDTO}
      2. {ALERT.SUBJECT}
      3. {ALERT.MESSAGE}
    6. 勾选"已启用"-添加
  4. 设置用户
    1. 管理-用户-点击要设置的用户-报警媒介-添加-刚建的"邮件告警"-写收件人-选告警级别,勾选"已启用"-添加-更新
  5. 设置动作
    1. 配置-动作-事件源选"触发器"-创建动作-名称:邮件告警发送-新的触发条件:问题已被制止-不-添加-新的解发条件:触发器示警度-大于等于-警告-添加-计算方式:A and B-
    2. 操作
      1. 默认标题:故障{TRIGGER.STATUS},主机:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
      2. 消息内容
        问题发生 名称: {EVENT.NAME}
        问题发生 主机: {HOST.NAME}
        问题发生 ID: {EVENT.ID}
        问题发生 值: {EVENT.VALUE} 
        问题发生 状态: {EVENT.STATUS} 
        问题发生 时间: {EVENT.TIME}
        问题发生 日期: {EVENT.DATE}
        问题发生时长: {EVENT.AGE}
        问题发生确认: {EVENT.ACK.STATUS} 
        问题发生历史: {EVENT.UPDATE.HISTORY}
        
    3. 暂停操作以制止问题 勾选
    4. 操作-新的-操作类型:发送信息-添加用户组-仅送到:邮件告警-条件-新的-事件已确认-等于-非确认-添加
    5. 恢复操作
      1. 默认标题
        恢复{TRIGGER.STATUS},主机:{HOSTNAME1}发生:{TRIGGER.NAME}已恢复,持续时间:{EVENT.DURATION}
        
      2. 消息内容
        问题恢复名称:{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}
        
      3. 操作:添加方法同上
      4. 添加

zabbix 配置邮件报警

  1. 报警媒介类型
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

zabbix 监控项

监控项类型

  1. 可计算监控项
    1. 语法
      func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)
      
    2. 参数
      参数定义
      func触发器表达式支持的函数: last, min, max, avg, count等
      key另一监控项的键值,该键值的数据是你想要使用的。 它可以被定义为 key 或者 hostname:key。注意: 强烈建议将整个键放在双引号(“…”)中,以避免由于键内的空格或逗号而导致错误的解析。\如果键中也有引用的参数,那么必须使用反斜杠()来转义这些双引号。 请参考下文的 示例 5 。
      parameter(s)功能参数(如果需要)
    3. 示例
      功能示例
      计算根分区上可用磁盘空间的百分比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\"]")

简单监控

  1. ICMP监控
    1. 官方文档
    2. fping
      1. 安装fping yum install -y fping
      2. 查看zabbix中fping设置的路径
        vi /etc/zabbix/zabbix_server.conf
        #查看FpingLocation项路径,保持跟系统中fping的路径一致
        
      3. 设置fping权限
        chown root:zabbix /usr/sbin/fping && chmod 4710 /usr/sbin/fping
        
      4. 修改/etc/passwd中zabbix账户的登录shell为bash.并切换到zabbix用户测试fping命令
    3. 增加ICMP的监控项
      1. 如果要监控一个IP地址,可增加主机,接口为客户端(不需要安装agent),设置好简单监控的模板,在最新数据中查看结果
      2. 进入特定模板-创建监控项-名称:ping延时-类型:简单检查-键值:icmppingsec[,20,200,64,2000,avg]-表示:目标默认为本主机,发送20个包,间隔200毫秒,包大小64,超时2秒(fping v4.x不能超过2000),展示平均值-用户名密码无-信息类型:浮点数-单位:ms-更新间隔30秒-预处理-添加-自定义倍数-参数:1000-更新
      3. 图片预览
        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Web监控

  1. 配置–主机–主机群组–添加主机群组–名称:服务器
  2. 配置–模板–创建模板–模板名称:http_status–群组选择刚才创建的主机群组:服务器–Web场景–创建Web场景–名称:http_code–客户端(选择Microsoft Edge 80)–步骤----添加步骤–名称:青龙面板_状态–URL:http://192.168.99.251:5700–要求的状态码:200–添加–图形–添加图形–名称:青龙面板_状态–图形下的监控项–添加-选择Response code的那项–添加–添加
  3. 配置–主机–主机名称:Schedule–群组选择刚刚创建的"服务器"群组–添加
  4. 配置–主机–模板–群组选择刚才创建的主机群组:服务器–刚刚创建的模板:http_status–更新
  5. 配置–主机–指定主机的触发器–创建触发器–名称:青龙面板状态异常–严重性(根据需要选择)–表达式–添加–监控项–选择刚才创建的"Download speed for scenario “http_code”"项–结果=0–插入
    1. 如果选择"Response code for step"的监控项,最近一次值一直都是200,如果不能访问了,不能获取值,但最后一次的值不改变,所以可能不会触发
  6. 查看方法:监测–主机–指定主机的图形或Web监测

snmp trap

  1. zabbix-server主机上的snmptrapd服务监控udp162端口,接收trap信息
  2. snmptrapd服务上配置是将trap信息交给perl脚本、shell脚本、或者snmptt服务
  3. zabbix-server的配置文件中开启:StartSNMPTrapper=1;并且指定配置文件,如果使用perl脚本,要跟脚本中定义的日志文件一致
  4. 在zabbix-web中增加监控项,注意snmptrap监控项不能主动获取数据,只能被动接收数据
Ubunut22.04 Zabbix6.0.17 LTS 环境
  1. 配置被监控端(以华为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
    
  2. 在zabbix-server上测试是否可以收到trap信息
    # 使用tcpdump抓取trap包
    tcpdump udp port 162 and host 192.168.7.143
    # 在被监控端,shutdown一个端口,查看以上命令是否抓取到trap信息
    
  3. 安装,配置软件包
    #!/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
    
  4. 在官方的源码包中复制出perl脚本
  5. perl脚本在源码包中的位置:misc/snmptrap/zabbix_trap_receiver.pl
  6. 复制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
  1. 安装软件包
  2. 下载源码包获取per脚本
  3. 修改snmptrap配置文件
  4. 查看snmptrap服务是否正常启动
  5. 查看并记录perl脚本中日志文件路径
  6. 修改zabbix-server配置文件:1.snmp日志文件路径;2.允许SNMp trapper进程启动
  7. 重启zabbix-server服务,并查看有没有报错
  8. 如果开启防火墙的话放行UDP:162端口
  9. 命令
    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为例)
  1. 安装软件包
  2. 向zabbix-server发送测试信息
  3. 命令
    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"
    
  4. 在zabbix-server端查看snmptrap日志
    cat /tmp/zabbix_traps.tmp 
    
zabbix-server端配置snmp-trap监控项
  1. snmp trap 类型的监控项在手工"立即执行"时会报错"错误的监控项类型,请求无法发送
    1. 个人理解为:snmp trap类型不能主动发送请求,只能被动接收信息。
  2. 键值"snmptrap[]",可以匹配接收所有信息;"snmptrap.fallback"可以匹配所有未被匹配的信息。
  3. 如果信息类型为"日志"获取不到信息,可尝试修改为"文本",如果"文本"可以收到信息,可能是"日志时间格式"跟traphandle(perl脚本,shell脚本,snmptt)中设置的不一致。
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

zabbix 宏

  1. 宏的分类

    1. 系统宏变量 :{宏变量}
    2. 用户自定义宏变量:{$宏变量}
    3. 自动发现宏变量:{#宏变量}
    4. 宏变量函数
      1. regsub:区分大小写
      2. iregsub:不区分大小写
  2. 系统宏

    1. 常用的宏
      解释
      {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的最近一个值
  3. 用户自定义的宏

    1. 定义位置
      管理-一般-右侧菜单:宏
  4. 宏变量函数

    1. 示例
      1. 语法:{{监控项的值.regsub("匹配正则表达式",匹配后显示的内容)}}
      2. 当监控项的值为0时显示"宏变量正常"{{ITEM.VALUE}.regsub(“0”,宏变量正常)}

zabbix 触发器

grafana 图形化展示

  1. 简介
    1. 官网
    2. 下载
    3. 插件

grafana安装

  1. 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 
    
  2. zabbix插件安装
    grafana-cli plugins install alexanderzobnin-zabbix-app
    systemctl restart grafana-server
    systemctl enable grafana-server
    
  3. grafana 密码重置
    sudo grafana-cli admin reset-admin-password xxxxxxxx
    
  4. 启用插件
    1. http://192.168.99.254:3000/plugins 进入web,雇用zabbix插件,第一次登录用户名密码都是admin,首次登录后更改密码
    2. http://192.168.99.254:3000/datasources/new 添加zabbix数据库
      1. MYSQL数据库
        1. Name:MySQL-zabbix
        2. Database:zabbix
        3. User:zabbix
        4. Password:数据库密码
        5. Save&Test
    3. http://192.168.99.254:3000/datasources/new 添加zabbix数据源
      1. Name:自定义
      2. URL:http://192.168.99.254/zabbix/api_jsonrpc.php (默认IP处是localhost不行,需要改成IP;如果不是80端口需要加上端口)
      3. Access:Browser
      4. Username:Admin
      5. Password:zabbix(zabbix登录密码)
      6. Zabbix version:4.x
      7. Direct DB Connection:允许并选择上面新建的MySQL-zabbix数据库
      8. Save&Test

grafana 变量使用

  1. 引用变量$变量名
  2. 普通字符串变量
    进入Dashboard settings-Variables-new-Name:DaiKuan_KeHu_BaiDu_CDN1-Type:Text box-Hide:Varible-Default value:200G-Add

Zabbix拓扑图

  1. 官方文档
  2. 在Zabbix的拓扑图中,打开"展开宏"功能,增加链接,在标签中使用特定格式,可以显示出监控项的值
  3. 效果预览
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  4. 标签格式
    核心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 介绍

  1. pypi
  2. 官方介绍文档
  3. github api示例

zabbix_utils 安装

  1. 使用pip
    pip install zabbix_utils
    
  2. 使用github
    git clone https://github.com/zabbix/python-zabbix-utils
    cd python-zabbix-utils/
    python setup.py install
    

zabbix_utils 使用

环境变量

  1. ABBIX_URL、ZABBIX_TOKEN、ZABBIX_USER ZABBIX_PASSWORD

用户认证

  1. 使用用户名和密码
    1. 代码
      from zabbix_utils import ZabbixAPI
      
      api = ZabbixAPI(
          url="192.168.99.254",
          user="Admin",
          password="China123"
      )
      
  2. 使用token
    1. 代码
      from zabbix_utils import ZabbixAPI
      
      api = ZabbixAPI(url="192.168.99.254")
      api.login(token="bdidc")
      

Zabbix API

  1. 调用 API 方法的格式
    api_instance.zabbix_object.method(parameters)
    
  2. 调用实例
    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 对象
  1. API的版本
  2. 代码
    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 主机
  1. 查看所有主机的所有信息
    1. 即不使用过滤
    2. 代码
      hosts = api.host.get() # 获取所有主机信息
      # 显示所有主机的hostid、host、name
      for host in hosts:
          for key,value in host.items():
              print(key,value)
          print("*"*100)
      
  2. 查看指定主机的指定信息
    1. 即使用过滤
    2. 代码
      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 监控项
  1. 不使用过滤参考上面的host 主机
  2. 查看指定主机的所有监控项
  3. 查看指定主机的指定监控项
    1. 先要根据上面的host查出指定主机的hostid
    2. itemid不方便查询,可使用zabbix的键值过滤,关键字为"key_";如:‘key_’: “net.if.out[ifHCOutOctets.BC]”
    3. 代码
      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)
      
获取指定主机监控项周期最大值
  1. 默认为昨天的00:00:00到昨天的23:59:59,可修改
  2. 代码
    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中的历史数据和趋势数据

  1. 历史数据(history)和趋势数据(trends)是Zabbix中存储收集到的数据的两种方式。
  2. 历史数据:每一个收集到的监控数据,
  3. 趋势数据:按小时统计计算的平均值数据

将Zabbix语言改成中文

  1. 默认Zabbix支持中文,但是如果Linux系统不支持中文,那Zabbix的中文是灰色,不能更改.
  2. 查看系统的当前语言
    echo $LANG
  3. 如果不支持需要安装中文
    apt-get install -y language-pack-zh-hans
    reboot
    

Zabbix "图形"下中文乱码

  1. 在Windows系统的c:\windows\fonts目录中复制"黑体-常规"字体文件(不是所有中文字体都可以)
  2. 把复制的“simhei.ttf”复制到zabbix server的/usr/share/zabbix/assets/fonts目录中,并替换字体
  3. 目录不一定正确请使用find命令查找defines.inc.php文件确认
    sudo sed -i 's/DejaVuSans/simhei/g' /usr/share/zabbix/include/defines.inc.php
    
  4. 在Zabbix "图形"页面刷新即可

安装snmp工具snmpwalk

  1. Centos
    yum -y install net-snmp-utils
    
  2. ubuntu
    apt install -y snmp
    

zabbix fping配置

  1. 安装fping
  2. 修改fping的权限
    chown root:root /usr/bin/fping
    chmod u+s /usr/bin/fping
    

时区修改故障

  1. 修改 /etc/zabbix/apache.conf文件 Asia/Shanghai时区后,重启服务sudo systemctl restart zabbix-server,还是提示时区错误:修改的地方有两处,一处不生效,修改另一处后,重启,正常。

zabbix-server启动故障

  1. 在WEB页面中zabbix-server显示没有启动,但服务实际上已经启动。sudo netstat -ntpl | grep zabbix查看,只看到agent的10050端口。看不到server的10051端口。/etc/zabbix/zabbix_server.conf文件中的DBPassword=zabbix没有设置成功,重新设置,保存文件,重启服务后,正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/789907.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTTP协议分析/burp/goby/xray

一、HTTP简介 HTTP(超文本传输协议)是今天所有web应用程序使用的通信协议。最初&#xff0c;HTTP只是一个为获取基于文本的静态资源而开发的简单协议&#xff0c;后来人们以名种形式扩展和利用它.使其能够支持如今常见的复杂分布式应用程序。HTTP使用一种用于消息的模型:客户端…

使用Vue3、Pinia和Vite5打造高度还原的抖音仿制项目

douyin-vue 是一个模仿 抖音|TikTok 的移动端短视频项目。Vue 在移动端的"最佳实践"&#xff0c;媲美原生 App 丝滑流畅的使用体验。使用了最新的 Vue 技术栈&#xff0c;基于 Vue3、Vite5 、Pinia实现。数据保存在项目本地&#xff0c;通过 axios-mock-adapter 库拦…

如何将heic格式转换jpg?四种将heic转换成jpg的方法!

如何将heic格式转换jpg&#xff1f;在现今的数字图像处理领域&#xff0c;Heic格式作为一种被吹捧的创新型图像格式&#xff0c;以其先进的压缩技术&#xff0c;迅速减小了图片文件的大小&#xff0c;然而&#xff0c;尽管其有许多优点&#xff0c;实际使用中Heic格式却带来了一…

视频解码故障案例两则

案例1 绿边 故障分析&#xff1a; 这个能明显看到视频上方出现绿色半透明边带。这说明Y数据正常。UV数据不正常。 它显然与视频帧的垂直分辨率设置有关。 UV数据和Y数据是连续放置的&#xff0c;如果上方出现彩色数据失调&#xff0c;说明这部分数据实际仍然是Y数据。也就是…

ROM修改进阶教程------深度解析小米设备锁机型不解锁bl 刷写特殊类固件的步骤

在玩机过程中会遇到很多自己机型忘记密码或者手机号不用导致机型出现账号锁。无法正常使用。那么此类机型如果无法正常售后解锁。只能通过第三方渠道。例如在早期小米机型有强解bl锁资源。然后刷入完美解锁包。这种可以登陆新账号。但后期新机型只能通过修改分区来屏蔽原设备锁…

STM32智能机器人手臂控制系统教程

目录 引言环境准备智能机器人手臂控制系统基础代码实现&#xff1a;实现智能机器人手臂控制系统 4.1 数据采集模块 4.2 数据处理与控制算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;机器人手臂管理与优化问题解决方案与优化收尾与总结 1. 引言 …

绝区零启动遇到的问题

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ​ 绝区零》作为米哈游的一款全新都…

4-1 文本预处理:分词、停用词、特殊字符消失术

4-1 文本预处理&#xff1a;分词、停用词、特殊字符消失术 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本预处理是不可或缺的一步。有效的文本预处理能够显著提高模型的性能和准确性。本文将详细介绍文本预处理中的三个重要步骤&#xff1a;分词、停用词处理…

NPDP含金量高吗?什么人适合学习NPDP?

PMP考完了&#xff0c;最近在考NPDP&#xff0c;这也是一个有意思的证书&#xff0c;含金量还不错&#xff0c;非常适合想转型和升级的人来考。 一、NPDP是什么 NPDP其实就是产品经理国际资格认证&#xff08;New Product Development Professional&#xff09;&#xff0c;是…

怎么提高音频声音大小?提高音频声音大小的四种方法

怎么提高音频声音大小&#xff1f;在音频处理和编辑中&#xff0c;增加声音的音量是一个常见的需求&#xff0c;尤其是在确保音频清晰度和听觉效果的同时。调整音频的音量不仅仅是简单地提高音频的响度&#xff0c;它也涉及到如何保持音质的高标准&#xff0c;确保没有失真或削…

视频调色的技巧和方法 视频调色的操作步骤 视频调色用什么软件好免费 会声会影下载免费中文版

学会视频调色&#xff0c;就等于掌握了剪辑艺术的密码。视频调色不是为了画面好看&#xff0c;而是通过精心构思的色彩参数&#xff0c;向观众传达作品的情绪和内涵。普通剪辑师与剪辑高手之间的差距&#xff0c;就在于能否领悟视频调色的真谛。 一、视频调色有什么用 掌握混…

Pandas基础03:数据排序与增删

上一节我们介绍了通过按行索引和按列索引找出相关数据的方法。本章节将进一步介绍如何筛选数据&#xff0c;并对数据进行排序、增删的方法。 示例表格和上一节相同。 1.数据筛选 Python中可以通过区域筛选&#xff0c;即获取某几行某几列的方法得到数据。例如&#xff0c;我要…

伙伴活动|AI硬件大潮来袭,深圳的创客们在哪里?

「每一种硬件产品&#xff0c;都会被 GenAI 重新做一遍。」 分享一个社区伙伴「未来光锥」参与主办的活动。如果你同时对 AI 和硬件感兴趣&#xff0c;提到 maker 一词仍然会激动。推荐你参与这次活动。 AI 玩具Folotoy 的创始人、RTE 开发者社区成员王乐也将参与本次活动并分…

python怎么判断字符串以什么结尾

在python编辑器中新建一个data.py。 写上自己的注释。 然后新建一个变量testname。 利用endswith来判断字符串是不是以“ar”结尾。 将结果打印出来。 选择“run”->“run”。 运行该程序&#xff0c;如果是&#xff0c;就会返回true。

Xinstall揭秘:APP推广数据背后的真相,让你的营销更精准!

在这个移动互联网时代&#xff0c;APP如同雨后春笋般涌现&#xff0c;但如何在这片红海中脱颖而出&#xff0c;成为每一个开发者与运营者面临的共同难题。其中&#xff0c;APP推广统计作为衡量营销效果、优化推广策略的关键环节&#xff0c;更是不可忽视的一环。今天&#xff0…

【昇思25天学习打卡营打卡指南-第二十二天】GAN图像生成

GAN图像生成 模型简介 生成式对抗网络(Generative Adversarial Networks&#xff0c;GAN)是一种生成式机器学习模型&#xff0c;是近年来复杂分布上无监督学习最具前景的方法之一。 最初&#xff0c;GAN由Ian J. Goodfellow于2014年发明&#xff0c;并在论文Generative Adve…

机器学习和AI智能写作对未来文案编辑的影响

欢迎关注小知&#xff1a;知孤云出岫 目录 机器学习和AI智能写作对未来文案编辑的影响1. 简介2. AI智能写作工具的现状3. AI智能写作的优势3.1 提高效率3.2 降低成本3.3 数据驱动的个性化 4. AI智能写作的挑战4.1 创造力和独创性4.2 道德和伦理问题4.3 技术限制 5. 行业变化5.…

鸿蒙开发:每天一个小bug----鸿蒙开发路由跳转踩坑

一、前言 报错内容显示找不到页面 &#xff0c;肯定我们页面没写对呗&#xff01; 可能是这几个原因:1.main_pages.json没配置路由 {"src": ["pages/02/UserInfoClass","pages/02/AppStorageCase02"] } 2.跳转路径没写对 错误&#xff1a;…

首次使用DevEcoStudio

1、双击桌面快捷方式&#xff0c;进入首次运行的欢迎页面 由于咱们之前电脑上没有安装过此软件&#xff0c;所以直接保持默认选项不导入配置&#xff0c;然后点击&#x1f197; 2、进入到欢迎界面&#xff0c;勾选同意后点击Agree 3、进入到工具正式页面 4、点击右侧界面中的C…

【js】js高精度加减乘除函数

加法 /*** 高精度加法函数&#xff0c;处理字符串或数字输入&#xff0c;去除尾部多余的零* param {string|number} a - 被加数* param {string|number} b - 加数* returns {string} - 计算结果&#xff0c;去除尾部多余的零*/ export const add (a, b) > {// 将输入转换为…