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 ]; thenecho "使用zabbix登录数据库成功"
    elseecho "使用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 staticaddress 192.168.99.254netmask 255.255.255.0gateway 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/bashSENT_TO=$1
    SENT_SUBJECT=$2
    SENT_CONTENT="/tmp/alert_$$.tmp"
    echo "$3">$SENT_CONTENTdos2unix $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 ZabbixAPIapi = ZabbixAPI(url="192.168.99.254",user="Admin",password="China123"
      )
      
  2. 使用token
    1. 代码
      from zabbix_utils import ZabbixAPIapi = 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 ZabbixAPIdef get_max_value(hostname,item_name,time_start,time_end):# 根据hostname获取hostidhosts = api.host.get(filter={'name': hostname},output=['hostid'])hostid = hosts[0].get('hostid')# 根据hostid获取itemiditems = 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 = Nonereturn max_valueif __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没有设置成功,重新设置,保存文件,重启服务后,正常。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图文讲解IDEA如何导入JDBC驱动包

前言 学习JDBC编程,势必要学会如何导入驱动包,这里笔者用图文的方式来介绍 视频版本在这里 50秒教你怎么导入驱动包然后进行JDBC编程的学习_哔哩哔哩_bilibili 忘记录音频了,大伙凑合着看 下载驱动包 https://mvnrepository.com/artifact/mysql/mysql-connector-java 去中…

GB28181设备如何添加

简介 此篇描述视频网关&#xff08;中间件&#xff09;接入大华、海康、ONVIF设备&#xff08;NVR、摄像头&#xff09;、GB28181设备步骤和流程。 阅读本文档之前建议先阅览视频网关&#xff08;中间件&#xff09;用户使用手册。 接入方式和说明 视频网关&#xff08;中间…

论文学习_Getafix: learning to fix bugs automatically

1. 引言 研究背景:现代生产代码库极其复杂并且不断更新。静态分析器可以帮助开发人员发现代码中的潜在问题(在本文的其余部分中称为错误),这对于在这些大型代码库中保持高代码质量是必要的。虽然通过静态分析尽早发现错误是有帮助的,但修复这些错误的问题在实践中仍然主要…

jmeter-beanshell学习7-props获取全局变量和设置全局变量

继续写点不痛不痒的小东西。第一篇写了vars设置变量&#xff0c;但是vars只能作用在同一个线程组。跨线程组情况比较少&#xff0c;要是用到跨线程组&#xff0c;有个pros&#xff0c;用法和vars一样。 在setup线程组设置变量a&#xff0c;执行的时候&#xff0c;jmeter会先执行…

第二证券:转股溢价率是什么意思?高好还是低好?

转股溢价率是指可转债在商场上的交易价格相对于其转股价值的溢价份额&#xff0c;能够用来衡量投资者为取得将债券转换为股票权力而付出的额定金额&#xff0c;是可转债的重要指标。 转股溢价率的核算公式为&#xff1a;溢价率&#xff1d;&#xff08;转债价格-转股价值&…

MySql性能调优01-[数据结构和索引]

数据结构和索引 什么是索引索引的种类常见索引数据结构和区别二叉树 红黑树 什么是索引 索引的种类 在Mysql中索引是在存储引擎层实现的&#xff0c;而不是在服务层实现的 按数据结构分&#xff1a;Btree索引、Hash索引、Full-text索引按存储结构分&#xff1a;聚簇索引、非聚…

闲话银行家舍入法,以及在程序中如何实现

前言 相信对于四舍五入的舍入法&#xff0c;大家都耳熟能详&#xff0c;但对于银行家舍入法&#xff0c;可能就会比较少接触了&#xff01; 可是在金融界&#xff0c;银行家舍入法可是大名鼎鼎的主角之一&#xff0c;主要应用于金融领域和涉及货币计算的场合。 那么&#xf…

异步轮询 Web API 的实现与 C# 示例

在现代软件开发中&#xff0c;异步轮询 Web API 是一种常见的做法&#xff0c;尤其是在需要定期从服务器获取数据更新的场景下。C# 作为一种功能强大的编程语言&#xff0c;提供了丰富的异步编程支持&#xff0c;使得实现异步轮询变得相对简单。本文将介绍如何使用 C# 快速实现…

JavaWeb-js(4)

js事件 在前端页面中&#xff0c;js程序大多数是由事件来驱动的&#xff0c;当触发某些事件的时候&#xff0c;可以使用js负责响应。 js事件由三部分组成: 事件源——》指的是被触发的对象; 事件类型——》如何触发的事件&#xff0c;如:鼠标单击、双击、键盘操作等;…

钓鱼网站制作-克隆163企业邮箱

这里克隆163企业邮箱比较费劲&#xff0c;和之前的还不一样&#xff0c;这个克隆的目录比较多&#xff0c;发现好多工具都克隆不全&#xff0c;要不就是缺少图片要不就是缺少功能 首先效果 可以看到成功记录账户密码&#xff0c;接下来再来伪装到域名 这里克隆网站使用神器 …

bev 之 fastBEV

前面我们提到bev 之 LSS, 知道视觉的BEV方案的主要痛点在于: 1、depth 的预测 2、图像特征到BEV特征之间的视图变换消耗大量计算 LSS 为什么需要D维深度 占据大量消耗的原因是LSS 对每个图像特征点引入深度D&#xff0c;即假设每个像素上存在可能的D维深度。也就是假设不同像…

ubuntu18虚拟机克隆后不能上网和磁盘损坏问题

小学期直接给学弟学妹们自己配好的克隆的虚拟机&#xff0c;结果出现了这两种问题&#xff0c;参考了网上好多资料&#xff0c;太多了忘了存了&#xff0c;花了好久的时间才解决&#xff0c;这里记录一下。 磁盘损坏问题&#xff1a; 网络无法连同问题&#xff0c;ip addr发现…

特征融合篇 | YOLOv10改进之在Neck网络中添加加权双向特征金字塔BiFPN

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。在计算机视觉任务中&#xff0c;特征金字塔网络&#xff08;FPN&#xff09;是一种常用的方法&#xff0c;它通过构建不同尺度的特征图来捕获不同尺度的目标。然而&#xff0c;传统的FPN存在一些缺点&#xff0c;如特征融合…

计算机网络--tcpdump和iptable设置、内核参数优化策略

tcpdump工具 tcpdump命令&#xff1a; 选项字段&#xff1a; 过滤表达式&#xff1a; 实用命令&#xff1a; TCP三次握手抓包命令&#xff1a; #客户端执行tcpdump 抓取数据包 tcpdump -i etho tcp and host 192.168.12.36 and port 80 -W timeout.pcapnetstat命令 netst…

java算法day11

二叉树的递归遍历二叉树的非递归遍历写法层序遍历 递归怎么写&#xff1f; 按照三要素可以保证写出正确的递归算法&#xff1a; 1.确定递归函数的参数和返回值&#xff1a; 确定哪些参数是递归的过程中需要处理的&#xff0c;那么就在递归函数里加上这个参数&#xff0c; 并且…

第二证券:销量暴跌95%,这一巨头市值蒸发超3000亿元!

在多重要素刺激下&#xff0c;PCB工作站上风口。 波音销量堕入停滞 6月仅售出3架客机 据央视财经&#xff0c;在一系列丑闻的影响下&#xff0c;波音公司本年出售遭到明显冲击。当地时间9日&#xff0c;波音发布的数据闪现&#xff0c;在以前一个月&#xff0c;该公司仅卖出…

excel有条件提取单元格特定文本(筛选纯文字的单元格或含有数字的单元格、单元格提取不同的文本长度)

实际工作背景 需要对导出的银行流水中的数十个村以及对应的村小组进行分组统计&#xff0c;但是初始的表格中村和小组是混在一起的&#xff0c;如下图所示&#xff1a; 目的&#xff1a;将大树村和大树村小组名称分别筛选出来 1.观察发现&#xff0c;大树村小组的单元格第4…

代码随想录算法训练营第四十九天| 647. 回文子串、 516.最长回文子序列

647. 回文子串 题目链接&#xff1a;647. 回文子串 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 思路&#xff1a; dp[i][j] 表示字符串 s 从索引 i 到索引 j 这一段子串是否为回文子串。 当s[i]与s[j]不相等&#xff0c;那没啥好说的了&#xff0c;dp[i][j]一定是fa…

构建与操作共享栈

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝既然选择了远方,当不负青春,砥砺前行! 共享栈是一种优化的栈实现方式,它允许两个或多个栈共享同一段连续的内存空间…

数据结构——Trie

题目&#xff1a; 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x&#x1d465;&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 N&#x1d441; 个操作&#xff0c;所有输入的字符串总长度不超过 10^5&#xff0c;字符串仅…