Zabbix学习笔记02

Zabbix配置文件参数

  • Zabbix监控系统组件为server、proxy、agentd端,对各自组件的参数深入理解能够对Zabbix进行调优
  • zabbix_server.conf配置文件参数:
    • DBHost:数据库主机地址
    • DBName:数据库名称
    • DBPasswd:数据库密码
    • DBPort:数据库端口号,默认为3306
    • AlertScriptsPath:告警脚本存放路径
    • CacheSize:存储监控数据的缓存
    • CacheUpdateFrequency:更新一次缓存的事件
    • DebugLevel:日志级别
    • LogFile:日志文件路径
    • LogFileSize:日志文件大小,超过自动切割
    • LogSlowQueries:数据库慢查询记录,单位为ms
    • PidFile:PID文件
    • ProxyConfigFrequency:proxy被动模式下,server用多少秒同步配置文件至proxy
    • ProxyDataFrequency:被动模式下,server间隔多少秒向proxy请求历史数据
    • StartDiscoverers:发现规则线程数
    • Timeout:连接agent超时时间
    • TrendCacheSize:历史数据缓存大小
    • User:Zabbix运行的用户
    • HistoryCacheSize:历史记录缓存大小
    • ListenIP:监听本机的IP地址
    • ListenPort:监听端口
    • LoadModule:模块名称
    • LoadModulePath:模块路径
  • zabbix_proxy.conf配置文件参数:
    • ProxyMode:proxy工作模式,默认为主动模式,主动发送数据至server端
    • Server:指定server端IP地址
    • ServerPort:server端端口
    • Hostname:proxy端主机名
    • ListenPort:proxy端监听端口
    • LogFile:proxy代理端日志路径
    • PidFile:PID文件的路径
    • DBHost:proxy端数据库主机名
    • DBName:proxy端数据库名称
    • DBUsert:proxy端数据库用户
    • DBPasswd:proxy端数据库密码
    • DBSocket:proxy端数据库socket路径
    • DBPort:proxy端数据库端口号
    • DataSenderFrequency:proxy向server发送数据的时间间隔
    • StartPollers:proxy线程池数量
    • StartDiscoverers:proxy端自动发现主机的线程数量
    • CacheSize:内存缓存配置
    • StartDBSyncers:同步数据线程数
    • HistoryCacheSize:历史记录缓存大小
    • LogSlowQueries:数据库慢查询记录,单位为ms
    • Timeout:超时时间
  • zabbix_agentd.conf配置文件参数:
    • EnableRemoteCommands:是否运行服务端远程至客户端执行命令或者脚本
    • Hostname:客户端主机名
    • ListenIP:监听的IP地址
    • ListenPort:监听端口
    • LoadModulePath:模块路径
    • LogFile:日志文件路径
    • PidFile:PID文件名
    • Server:指定server端IP地址
    • ServerActive:Zabbix主动监控server的IP地址
    • StartAgents:agent启动进程,如果设置为0,表示禁用被动监控
    • Timeout:超时时间
    • User:运行Zabbix的用户
    • UserParameter:用户自定义key
    • BufferSize:缓冲区大小
    • DebugLevel:Zabbix日志级别

Zabbix自动发现及注册

  • Zabbix自动发现功能是为了解决批量监控而设计的.基于Zabbix server端设定的规则,自动批量的去发现局域网若干服务器,并自动把服务器添加至Zabbix监控平台

  • Zabbix最大的特点之一是可以批量自动发现主机并监控,利用发现(discovery)模块,实时自动发现主机、自动将主机添加到主机组、自动加载模块、自动创建项目(items)、自动创建监控图像,操作步骤为

    1. 依次选择Configuration --> Discovery --> Create discovery rule,创建客户端发现规则

      • Name:规则名称
      • Discovery by proxy:通过代理搜索
      • IP range:zabbix_server搜索区域的IP范围
      • Delay:搜索一次的时间间隔
      • Checks:检测方式,如用ping方式去发现主机,zabbix_server需安装fping,也可使用agent方式发现
      • Device uniqueness criteria:以IP地址作为被发现主机的标识
Zabbix学习笔记02_第1张图片
image.png
  1. Zabbix客户端安装agent

    • 由于发现规则里选择checks方式为agent,所以需在所有被监控的服务器安装Zabbix agent,安装方式可以手动,也可以使用shell脚本,脚本运行方法为sh auto_install_zabbix.sh
    # IP变量有问题
    
    #!/bin/bash
    #auto install zabbix
    ###########################
    ZABBIX_SOFT='zabbix-3.2.6.tar.gz'
    ZABBIX_PATH='zabbix-3.2.6'
    INSTALL_DIR='/usr/local/zabbix/'
    SERVER_IP='10.0.0.202'
    IP="ifconfig |awk 'NR==2{print $2}'"
    AGENT_INSTALL(){
    yum install curl curl-devel net-snmp net-snmp-devel perl-DBI -y
    groupadd zabbix;useradd -g zabbix zabbix;usermod -s /sbin/nologin zabbix
    tar -xzf $ZABBIX_SOFT;cd $ZABBIX_PATH
    ./configure --prefix=/usr/local/zabbix --enable-agent&&make install
    if [ $? - eq 0];then
       ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin
    fi
    cd -;cd $ZABBIX_PATH
    cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd;chmod o+x /etc/init.d/zabbix_agentd
    # config zabbix agentd
    cat >$INSTALL_DIR/etc/zabbix_agentd.conf<
  2. 创建发现action

    • Zabbix发现规则创建完毕,客户端agent安装完后,被发现的IP主机不会自动添加至Zabbix监控列表,需要添加发现动作,一次选择Configuration --> Actions --> Event source(Discovery) --> Create action
    • 添加规则时,系统默认存在一条发现规则,可以新建规则,也可以使用默认规则
    • 新建规则时,在Operations中分别设置Add host、Add to host groups、Link to templates
Zabbix学习笔记02_第2张图片
image.png
Zabbix学习笔记02_第3张图片
image.png
Zabbix学习笔记02_第4张图片
image.png
 - 依次选择Monitoring --> Discovery查看通过发现规则找到的服务器IP列表
Zabbix学习笔记02_第5张图片
image.png
 - 依次选择Configuration --> Hosts,查看主机是否被自动监控至Zabbix监控平台
Zabbix学习笔记02_第6张图片
image.png
 - 依次选择Configuration --> Graphs,查看监控图像
Zabbix学习笔记02_第7张图片
image.png

Zabbix邮件报警

  • 在Zabbix服务器端设置邮件报警,当贝监控主机宕机或者达到设定的触发器预设值时,会自动发送报警邮件、微信信息到指定的人员.Zabbix邮件报警设置步骤为:
    1. 设置邮件模板及邮件服务器
      • 依次选择Administrator --> Media types --> Create media type,填写邮件服务器信息
    2. 配置接收报警的邮箱
      • 依次选择Administrator --> User --> Admin(Zabbix Administrator) --> user --> admin,再选择media,单击Add添加发送邮件的类型为Email,同时指定接收邮箱地址为[email protected]

Zabbix监控MySQL主从复制

  • Zabbix除了可以监控agent客户端服务器状态、CPU、内存、硬盘、网卡流量等运行情况,同时Zabbix还可以监控MySQL主从复制、LAMP、Nginx Web服务器

  • Zabbix监控MySQL主从复制:

    1. 在10.0.0.203Zabbix agent端/data/sh目录创建shell脚本mysql_ab_check.sh
    #!/bin/bash
    /usr/local/mysql/bin/mysql -uroot -e 'show slave status\G;'|grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
    
    1. 在客户端zabbix_agentd.conf配置文件中加入代码
    # 格式为UserParameter=key,command
    UserParameter=mysql.replication,sh /data/sh/mysql_ab_check.sh
    
    # 重启Zabbix agent使配置生效
    /etc/init.d/zabbix_agentd restart
    
    1. Zabbix服务器端获取监控数据,如果返回值为2,则证明从库I/O、SQL线程均为Yes,表示主从同步成功
    /usr/local/zabbix/bin/zabbix_get -s 10.0.0.203 -k mysql.replication
    
    1. 在Zabbix Web平台,在10.0.0.203hosts中创建item监控项,单击右上角create item,在Key输入栏中填写zabbix_agentd配置文件中的mysql.replication
Zabbix学习笔记02_第8张图片
image.png
Zabbix学习笔记02_第9张图片
image.png
Zabbix学习笔记02_第10张图片
image.png
  • MySQL主从监控创建Graph图像
Zabbix学习笔记02_第11张图片
image.png
  • MySQL主从监控项创建触发器,MySQL主从状态监控,设置触发器条件Key值不等于2即可,不等于2即表示MySQL主从同步异常,匹配触发器会执行Actions
Zabbix学习笔记02_第12张图片
image.png
Zabbix学习笔记02_第13张图片
image.png
  • 如果主从同步状态异常,Key值不等于2,会触发邮件报警

Zabbix分布式

  • Zabbix是一个分布式监控系统,它可以以一个中心点、多个分节点的模式运行,使用proxy能大大地降低Zabbix server的压力,Zabbix proxy可以运行在独立的服务器上

  • 安装Zabbix proxy,基于zabbix-3.2.6.tar.gz软件包,同时导入Zabbix基础框架表

    1. 下载Zabbix软件包
    https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz/download
    
    1. 在Zabbix proxy执行如下代码
    yum install curl curl-devel net-snmp net-snmp-devel perl-DBI -y
    groupadd zabbix;useradd -g zabbix zabbix;usermod -s /sbin/nologin zabbix
    
    1. Zabbix proxy端配置
    • 创建Zabbix数据库,执行授权命令

      create database zabbix_proxy charset=utf8;
      

    grant all on zabbix_proxy.* to zabbix@'10.0.0.%' identified by '123456';
    flush privileges;

      
      - 解压Zabbix软件包并将Zabbix基础SQL文件导入数据至Zabbix数据库
      
    ```sh
      tar xf zabbix-3.2.6.tar.gz
      cd zabbix-3.2.6
      mysql -uzabbix -p123456 zabbix_proxy < database/mysql/schema.sql 
      mysql -uzabbix -p123456 zabbix_proxy < database/mysql/images.sql
      # mysql -uzabbix -p123456 zabbix < database/mysql/data.sql
    
    • 切换至Zabbix解压目录,安装zabbix_proxy
    ./configure --prefix=/usr/local/zabbix --enable-proxy --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl  # 预编译
    make  # 编译安装
    make install  # 执行安装
    ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin  # 创建命令软链接
    
    • Zabbix proxy安装完毕,cd /usr/local/zabbix/etc目录
Zabbix学习笔记02_第14张图片
image.png
  1. 备份Zabbix proxy配置文件
cp zabbix_proxy.conf{,.bak}
  1. 配置zabbix_proxy.conf,并启动mysql_proxy
Server=10.0.0.202
Hostname=10.0.0.205
LogFile=/tmp/zabbix_proxy.log
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123456
Timeout=4
LogSlowQueries=3000
DataSenderFrequency=30
HistoryCacheSize=128MB
CacheSize=128MB
# 启动mysql_proxy服务
/usr/local/zabbix/sbin/zabbix_proxy

# 报错
zabbix_proxy: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

# 解决方法
cd /usr/local/mysql/lib
cp libmysqlclient.so.20  /usr/lib64/libmysqlclient.so.20
zabbix_proxy
ps -ef|grep zabbix # 查看zabbix_proxy进程有没有启动
  1. Zabbix客户端安装agent,同时配置agent端server设置为proxy服务器的IP地址或者主机名,zabbix_agentd.conf配置如下
LogFile=/tmp/zabbix_agentd.log
Server=10.0.0.205
ServerActive=10.0.0.205
Hostname=10.0.0.206

# 保存退出配置文件并启动服务
/etc/init.d/zabbix_agentd start

# 在Zabbix proxy端测试是否能连接到Zabbix agent端
/usr/local/zabbix/bin/zabbix_get  -s 10.0.0.206 -k system.uname

# 查看Zabbix proxy端日志发现报错信息
cannot send list of active checks to "10.0.0.206": host [10.0.0.206] not found

# 解决方法,重新启动zabbix_proxy
zabbix_proxy
  1. 在Zabbix server Web端添加proxy,实现集中管理和分布式添加监控
Zabbix学习笔记02_第15张图片
image.png
Zabbix学习笔记02_第16张图片
image.png
Zabbix学习笔记02_第17张图片
image.png
  1. 添加Zabbix agent端10.0.0.206主机,并勾选Monitored by proxy的Zabbix proxy端主机或IP地址
Zabbix学习笔记02_第18张图片
image.png
Zabbix学习笔记02_第19张图片
image.png
Zabbix学习笔记02_第20张图片
image.png
  1. 查看代理agent的主机状态,发现已经为可用了
Zabbix学习笔记02_第21张图片
image.png

Zabbix触发命令及脚本

  • Zabbix在对服务或者设备进行监控的时候,如果被监控客户端服务异常,满足触发器,可以发送邮件报警、短信报警及微信报警.Zabbix还可以远程执行命令或者脚本,对部分故障实现自动修复,具体可以执行的任务为:
    • 重启应用程序,例如Apache、Nginx、MySQL、Tomcat服务等
    • 通过IPMI接口重启服务器
    • 删除服务器磁盘空间及数据
    • 执行脚本及资源调度管理
    • 远程命令最大长度为255个字符
    • 同时支持多个远程命令
    • Zabbix代理不支持远程命令
  • 使用Zabbix远程执行命令,需在Zabbix客户端配置文件开启对远程命令的支持,在zabbix_agentd.conf行尾加入如下代码,并重启服务
    • EnableRemoteCommands=1 运行服务端远程至客户端执行命令或脚本
vim /usr/local/zabbix/etc/zabbix_agentd.conf
EnableRemoteCommands=1   # 然后保存退出
  • 创建Action,依次选择Configuration -> Actions --> Triggers,类型选择Remote command,Steps表示执行命令1-3次,Step duration表示设置每次命令执行间隔时间,60s执行一次,执行命令方式选择Zabbix agent,基于sudo执行命令
Zabbix学习笔记02_第22张图片
image.png
Zabbix学习笔记02_第23张图片
image.png
  • 在Zabbix客户端/etc/sudoers配置文件中添加zabbix用户拥有执行权限且无需密码登录
Defaults:zabbix !requiretty
zabbix  ALL=(ALL) NOPASSWORD: ALL
  • 在Zabbix客户端/data/sh,创建auto_clean_disk.sh文件,脚本代码为
#!/bin/bash
#auto clean disk space
rm -rf /boot/test.img
find /boot/ -name "*.log" -size +100M -exec rm -rf {} \;
  • 将10.0.0.203服务器/boot目录临时写满,然后满足触发器,实现远程命令执行
  • 如果Zabbix客户端脚本或者命令没有执行成功,HTTP服务没有停止,可以在Zabbix server端执行如下命令
/usr/local/zabbix/bin/zabbix_get -s 10.0.0.203 -k 'system.run[sudo /etc/init.d/httpd restart]'

你可能感兴趣的:(Zabbix学习笔记02)