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://xiahunao.cn/news/3227017.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

中国光储充一体化行业:有望成为全球能源转型的重要驱动力

光储充一体化系统&#xff0c;又称微电网解决方案&#xff0c;系一种整合分布式光伏能源、用电负载管理、配电设施以及监控与保护设备的自给型能源供应体系。该系统核心组件包括光伏发电系统、储能装置及充电站&#xff0c;其工作原理为&#xff1a;光伏发电系统捕获太阳能并转…

vue3-openlayers WebGL加载地图(栅格切片、矢量切片)

本篇介绍一下使用vue3-openlayers WebGL加载地图&#xff08;栅格切片、矢量切片&#xff09; 1 需求 vue3-openlayers WebGL加载地图&#xff08;栅格切片、矢量切片&#xff09; 2 分析 栅格切片使用ol-webgl-tile-layer 矢量切片使用ol-vector-tile-layer&#xff08;默…

mac安装配置cmake

本机是2015 macbook pro mid&#xff0c;已经有点老了&#xff0c;用homebrew下cmake老出问题 其实cmake官网安装也不麻烦 一、官网下载对应安装包 Download CMake 和所有dmg文件一样安装 二、改成命令行使用 一般来说 tutorial 给的都是命令行build 命令行的设置如下&am…

如何录制屏幕视频?4款软件,轻松录屏

在数字化飞速发展的时代&#xff0c;如何录制屏幕视频已经成为我们工作、学习和娱乐中不可省略的一个重要问题。无论是制作教学教程还是录制游戏视频等&#xff0c;屏幕视频录制都为我们提供了极大的便利。今天&#xff0c;就让我们一起探索如何录制屏幕视频的精彩方式&#xf…

商业合作方案撰写指南:让你的提案脱颖而出的秘诀

作为一名策划人&#xff0c;撰写一份商业合作方案需要细致的规划和清晰的表达。 它是一个综合性的过程&#xff0c;需要策划人具备市场洞察力、分析能力和创意思维。 以下是能够帮助你撰写一份有效的商业合作方案的关键步骤和要点&#xff1a; 明确合作目标&#xff1a;设定…

【Linux】进程(9):进程控制3(进程程序替换)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux进程&#xff08;9&#xff09;进程控制1&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 &#xff08;A&#xff09;什么是进程程序替换&#xf…

『ComfyUI』从小白到入门全套教程,奶奶看了都会了!赶紧收藏!

本文简介 Stable Diffusion WebUI 应该是大多数人第一次接触 SD 绘画的工具&#xff0c;这款工具简单易上手&#xff0c;但操作流程相对固定。如果你想拥有更自由的工作流&#xff0c;可以试试 ComfyUI。而且很多新的模型和功能在刚出现时 ComfyUI 的支持度都比较高&#xff0…

【UE5】调用ASR接口,录制系统输出。录制音频采样率不匹配

暂时测出window能用。阿里的ASR接口当前仅支持8000和16000。UE默认采样44100。

PP网/尼龙网检测方案居然如此高效?

硅胶套是一种由硅胶材料制成的套管&#xff0c;通常用于保护、密封或绝缘电子元件、电线、电缆等。硅胶具有优异的耐高温、耐低温、耐化学腐蚀和绝缘性能&#xff0c;因此硅胶套常被用于需要抗高温、耐磨、耐腐蚀的环境中。硅胶套的柔软性和良好的弹性使其适合于包裹各种形状的…

python学习-容器类型

列表 列表&#xff08;list&#xff09;是一种有序容器&#xff0c;可以向其中添加或删除任意元素. 列表数据类型是一种容器类型&#xff0c;列表中可以存放不同数据类型的值,代码示例如下&#xff1a; 列表中可以实现元素的增、删、改、查。 示例代码如下&#xff1a; 增 …

SAP EWM display message对话框长度限制

1.问题 使用标准方法/scwm/cl_rf_dynpro_srvc=>display_message显示消息文本,由于消息文本过长而被截取,影响显示效果 2.解决 通过调试跟踪当前标准方法,发现屏幕显示长度为40,最多显示4行,且iv_msg_text把每一行显示字段用空格拼接起来,故以下代码需要把显示消息…

PHP全域旅游景区导览系统源码小程序

&#x1f30d;【探索无界&#xff0c;畅游无忧】全域旅游景区导览系统小程序全攻略 &#x1f4f1;【一键启动&#xff0c;智能导览在手】 告别纸质地图的繁琐&#xff0c;迎接全域旅游景区导览系统小程序的便捷时代&#xff01;只需轻轻一点&#xff0c;手机瞬间变身私人导游…

图片kb太大了怎么改小?修改图片kb的方法介绍

图片kb太大了怎么改小&#xff1f;将图片的文件大小&#xff08;以KB为单位&#xff09;缩小可以带来多种优点&#xff0c;但也有一些缺点需要注意。缩小图片文件大小可以显著减少它在硬盘或其他存储设备上占用的空间&#xff0c;使你能够存储更多的图片和其他文件。而且&#…

配置webstorm按eslint规则自动格式化代码

项目使用了eslint&#xff0c;但是每次使用自动格式代码时&#xff0c;webstorm不会按照 eslint 规则去格式化代码 解决办法&#xff1a; 在项目根目录找到 .eslintrc.js 并右键单击&#xff0c;菜单底部有一个 "Apply ESLint Code Style Rule" 点它&#xff0c;之后…

几种常见的项目日志使用方法

目录 一、stdin/stdout/stderr 1、重定向 二、Log4cpp第三方库 一、stdin/stdout/stderr 在通常情况下&#xff0c;Linux/UNIX每个程序在开始运行的时刻&#xff0c;都会打开3个已经打开的stream. 分别用来输入&#xff0c;输出&#xff0c;打印诊断和错误信息。通常他们会被…

网页报错err_connection_timed_out 怎么办?教你快速修复错误代码

遇到网页错误提示“ERR_CONNECTION_TIMED_OUT”时&#xff0c;通常表示你的网络浏览器无法在规定时间内从服务器获取数据。这种错误不仅会阻碍你访问特定网站&#xff0c;而且可能会引起一些疑惑和不便。首先&#xff0c;这个问题可能是由于网络连接问题、服务器响应延迟或配置…

在MyBatis中,resultType 与 resultMap

在MyBatis中&#xff0c;resultType 和 resultMap 是用于映射SQL查询结果的两种方式。它们的使用和区别如下&#xff1a;

Win10屏幕录制,这3种方法分享给你

数字化时代里&#xff0c;电脑的屏幕录制功能已经不再是简单的工具&#xff0c;而是成为我们表达、学习和交流的重要媒介。Win10系统依然是大部分人使用的电脑系统&#xff0c;那么关于Win10屏幕录制&#xff0c;有哪些好用高效的录制软件&#xff0c;能够帮助我们更加深入地捕…

Redis+Caffeine 实现两级缓存实战

RedisCaffeine 实现两级缓存 背景 ​ 事情的开始是这样的&#xff0c;前段时间接了个需求&#xff0c;给公司的商城官网提供一个查询预计送达时间的接口。接口很简单&#xff0c;根据请求传的城市仓库发货时间查询快递的预计送达时间。因为商城下单就会调用这个接口&#xff…

基于 TI AM62 测试 QtWayland 部署

By Toradex秦海 1). 简介 目前主流的 ARM 平台嵌入式 Linux BSP 的显示后端基本都已经从 X11 升级到了 Wayland&#xff0c; 而常用的 Wayland Compositor - Weston 对于 Linux 下常用的 Qt 图形界面开发框架的一些 Plugin (比如 Qt VirtualKeyboard) 的配合并不完善&#xf…