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)、自动创建监控图像,操作步骤为
-
依次选择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客户端安装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<
-
创建发现action
- Zabbix发现规则创建完毕,客户端agent安装完后,被发现的IP主机不会自动添加至Zabbix监控列表,需要添加发现动作,一次选择Configuration --> Actions --> Event source(Discovery) --> Create action
- 添加规则时,系统默认存在一条发现规则,可以新建规则,也可以使用默认规则
- 新建规则时,在Operations中分别设置Add host、Add to host groups、Link to templates
- 依次选择Monitoring --> Discovery查看通过发现规则找到的服务器IP列表
- 依次选择Configuration --> Hosts,查看主机是否被自动监控至Zabbix监控平台
- 依次选择Configuration --> Graphs,查看监控图像
Zabbix邮件报警
- 在Zabbix服务器端设置邮件报警,当贝监控主机宕机或者达到设定的触发器预设值时,会自动发送报警邮件、微信信息到指定的人员.Zabbix邮件报警设置步骤为:
- 设置邮件模板及邮件服务器
- 依次选择Administrator --> Media types --> Create media type,填写邮件服务器信息
- 配置接收报警的邮箱
- 依次选择Administrator --> User --> Admin(Zabbix Administrator) --> user --> admin,再选择media,单击Add添加发送邮件的类型为Email,同时指定接收邮箱地址为[email protected]
- 设置邮件模板及邮件服务器
Zabbix监控MySQL主从复制
Zabbix除了可以监控agent客户端服务器状态、CPU、内存、硬盘、网卡流量等运行情况,同时Zabbix还可以监控MySQL主从复制、LAMP、Nginx Web服务器
-
Zabbix监控MySQL主从复制:
- 在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
- 在客户端zabbix_agentd.conf配置文件中加入代码
# 格式为UserParameter=key,command UserParameter=mysql.replication,sh /data/sh/mysql_ab_check.sh # 重启Zabbix agent使配置生效 /etc/init.d/zabbix_agentd restart
- Zabbix服务器端获取监控数据,如果返回值为2,则证明从库I/O、SQL线程均为Yes,表示主从同步成功
/usr/local/zabbix/bin/zabbix_get -s 10.0.0.203 -k mysql.replication
- 在Zabbix Web平台,在10.0.0.203hosts中创建item监控项,单击右上角create item,在Key输入栏中填写zabbix_agentd配置文件中的mysql.replication
- MySQL主从监控创建Graph图像
- MySQL主从监控项创建触发器,MySQL主从状态监控,设置触发器条件Key值不等于2即可,不等于2即表示MySQL主从同步异常,匹配触发器会执行Actions
- 如果主从同步状态异常,Key值不等于2,会触发邮件报警
Zabbix分布式
Zabbix是一个分布式监控系统,它可以以一个中心点、多个分节点的模式运行,使用proxy能大大地降低Zabbix server的压力,Zabbix proxy可以运行在独立的服务器上
-
安装Zabbix proxy,基于zabbix-3.2.6.tar.gz软件包,同时导入Zabbix基础框架表
- 下载Zabbix软件包
https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz/download
- 在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
- 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 proxy配置文件
cp zabbix_proxy.conf{,.bak}
- 配置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进程有没有启动
- 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
- 在Zabbix server Web端添加proxy,实现集中管理和分布式添加监控
- 添加Zabbix agent端10.0.0.206主机,并勾选Monitored by proxy的Zabbix proxy端主机或IP地址
- 查看代理agent的主机状态,发现已经为可用了
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客户端/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]'