#zabbix监控openstack实例部署时遇到的几个问题
##部署环境
- server:virtualbox虚拟机centos6.8
- agent:virtualbox虚拟机openstack下windowsXP实例
##网络环境
- server:
Host Only
eth0:Link encap:Ethernet HWaddr: 08:00:27:5E:3B:81
inet addr:172.16.0.254 Bcast:172.16.0.255 Mask:255.255.255.0
NAT模式
eth1:Link encap:Ethernet HWaddr: 08:00:27:71:8A:BA
inet addr:10.0.3.15 Bcast:10.0.3.255 Mask:255.255.255.0
-
agent:
Ethernet adapter 本地连接: IP:192.168.111.5 Subnet Mask:255.255.255.0 Defualt Gateway:192.168.111.1
##遇到的问题以及解决方案
###1. 无法ping通
为winxp实例绑定浮动ip
配置安全组规则
centos配置防火墙
iptables -I INPUT -p tcp --dport 8051 -j ACCEPT
iptables -I INPUT -p tcp --dport 10050 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 10050 -j ACCEPT
iptables -I FORWARD -p tcp --dport 10050 -j ACCEPT
iptables -I INPUT -p tcp --dport 10051 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 10051 -j ACCEPT
iptables -I FORWARD -p tcp --dport 10051 -j ACCEPT
iptables -I INPUT -p tcp --dport 10052 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 10052 -j ACCEPT
iptables -I FORWARD -p tcp --dport 10052 -j ACCEPT
iptables -I INPUT -p tcp --dport 33051 -j ACCEPT
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
###2.host not found
zabbix_agentd.conf要与zabbix_server端写死的host名称要一致 Hostname=winxp
328:20160908:163651.328 no active checks on server [172.16.0.254:10051]: host [winxp] not found
328:20160908:163851.453 no active checks on server [172.16.0.254:10051]: host [winxp] not found
328:20160908:164051.421 no active checks on server [172.16.0.254:10051]: host [winxp] not found
###3.zabbix_agentd拒绝
zabbix_agentd.conf写死的server端ip要一致,用docker容器来部署的zabbix_server端会出现IP为docker0网卡的IP,与公网IP不一致,导致链接被拒绝,暂时用一键部署脚本来部署zabbix_server端
###4.mysql导入时Table XXX doesn't exist
要按照schema>images>data的顺序来导入
mysql -uzabbix -pmy_password zabbix < schema.sql
mysql -uzabbix -pmy_password zabbix < images.sql
mysql -uzabbix -pmy_password zabbix < data.sql
###5.nginx服务器无法启动
service nginx stop
sudo nginx
chmod -R 777 /data/web/zabbix/
service nginx start
###6.访问.php文件出现Access denied.
service php-fpm stop
sudo php-fpm
###7.fuel节点mysql数据库root用户密码破解
停止mysql服务
Ps -ef |grep mysql
killall -9 *********
killall -TERM mysqld
进入命令窗口,进入mysql安装目录下的bin目录下,跳过权限检测,启动mysql
mysql\bin>mysqld-nt --skip-grant-tables
设置新的root密码
update user SET password=PASSWORD("toor") where user='root';
SET PASSWORD = PASSWORD('toor');
mysql\bin>mysqladmin -u root flush-privileges password " toor "
停止mysql server,用正常模式启动mysql,然后用上面账号就可以登陆数据库库了。
ps -ef |grep mysql
killall -9 *********
killall -TERM mysqld
###8.开启mysql外部访问权限
mysql 默认是禁止远程连接的,你在安装mysql的系统行运行mysql -u root -p 后进入mysql 输入如下:
use mysql;
grant all privileges on *.* to 'root'@'%' identified by 'toor';
flush privileges;
CREATE USER 'zabbix'@'%' IDENTIFIED BY 'my_password';
GRANT ALL ON *.* TO 'zabbix'@'%';
SET PASSWORD FOR 'zabbix'@'%' = PASSWORD("my_password");
flush privileges;
\q
修改/etc/my.cnf:
vim /etc/my.cnf
bind-address = 0.0.0.0
##其他方面调优
除了整体架构的升级,还在了许多方面(主要是Zabbix)进行了调优,比如:
###尽量增加agent的超时时间
因为我们的监控采集项,都是需要对URL或者域名进行网络操作,这些操作往往都会比较耗时,而且这是正常的现象。因此,我们需要增加在Zabbix agent的采集超时,避免正常的网络操作还没完成,就被判断为超时,影响Server的数据获取。 ### Option: Timeout # Spend no more than Timeout seconds on processing # # Mandatory: no # Range: 1-30 # Default: # Timeout=3 Timeout=30 不要在采集脚本中加上超时
既然Zabbix agent中已经配置了采集超时时间,就不需要在采集脚本中添加超时了。一方面增加了维护成本,另一方面如果配置不当,还会造成Zabbix agent中的超时配置失效。(之前在脚本中使用了timeout命令,由于设置不正确,导致采集项总是不连续,调试了好久才查明原因。)
###增加Zabbix Server的Poller实例
默认情况,用于接收Zabbix agent采集数据的Poller实例只有5个。对于周期在1分钟内、数量会达到千级别的采集项来说,Poller实例显然是不够的,需要增大实例数,充分利用好服务器资源。例如: ### Option: StartPollers # Number of pre-forked instances of pollers. # # Mandatory: no # Range: 0-1000 # Default: # StartPollers=5 StartPollers=100
###利用好Zabbix trigger expression
如果只把trigger expression理解为“判断某个item value大于/小于某个阈值”,那就太低估Zabbix的trigger expression了,它其实可以支持很多复杂的逻辑。比如,为了防止网络抖动,需要当最近的连续两个采集项异常时,才改变trigger的状态,表达式可以写成: (假设item_key<0为异常) {host:item_key.last(#1)}<0&{host:item_key.last(#2)}<0
再举个例子,同样是为了防止采集的服务不稳定,我们可以规定,当目前trigger的状态为PROBLEM,并且最近5分钟的采集数据均正常的时候,才可以将trigger状态改为OK,表达式可以这样写: ({TRIGGER.VALUE}=0&{host:item_key.last(#1)}<0&{host:item_key.last(#2)}<0) | ({TRIGGER.VALUE}=1&{host:item_key.min(5m)}<0)
具体可以参考Trigger expression: https://www.zabbix.com/documentation/2.0/doku.php?id=manual/config/triggers/expression