zabbix 监控nginx/php/mysql/redis 只能监控到运行状态不能获取其他数据的优化

zabbix监控故障优化:

思路:
zabbix监控数据分为配置文件也就是userparameter配置,获取数据脚本配置和权限,还有程序获取数据支持三部分,如果监控除了问题,从着三方面进行排查

redis监控没数据或只能监控到服务是否开启

  • 首先确认脚本是否具有执行权限
  • conf配置文件指定的脚本路径是否正确
  • zabbix-agent配置文件Hostname参数是否与web端一致

mysql用mysqladmin监控数据库的时候出现不支持key的情况,用zabbix_get获取数据的时候能正常获取到数据,但是获取到的数据内容有:

 connection to database 'zabbix' failed: [1045] Access denied for user 'root'@'localhost' (using password: NO)

所以进行mysql配置更改,修改mysql配置文件,增加mysqladmin配置:

[mysqladmin]
user = 用户名
password = 密码
socket = socket文件

然后再用zabbix_get获取数据,看到提示

Warning: Using a password on the command line interface can be insecure.

去掉mysql监控脚本和配置文件里的用户名和密码端口地址等信息,因为配置过mysqladmin用户,所以或自动 户去用户名和密码。mysql5.6之后不能使用铭文密码。

nginx监控没数据,或只能获取到是否正在运行

故障原理与mysql一样。
1. 首先确认脚本加参数时候能正常执行,并能正常获取数据。有的机器执行脚本加参数的时候获取不到数据,或者获取到的数据是错误的数据,有可能是因为nginx没开status监控导致的。配置nginx配置文件server字段下添加 ngx_status监控:

                #监控nginx
        location /ngx_status
        {
                stub_status on;
                access_log off;
                allow 127.0.0.1;
                deny all;
        }

再次执行curl http://host/ngx_status能看到如下数据就成功了

这里要注意一下:
1.写脚本的收curl后面的地址一定要与nginx指定的地址一致,比如nginx指定了域名和端口,那这里也一定与之保持一直
2.当nginx配置ssl并将地址永久重定向到443端口后,这里的脚本要用https才能获取到数据

Active connections: 3 
server accepts handled requests
 1880035 1880035 2157371 
Reading: 0 Writing: 1 Waiting: 2

2.正常执行脚本,看能否获取数据,如果获取数据没问题。用zabbix_get在服务端获取数据。如果提示不支持的key,请留意获取数据的输出,除了数值之外,是否有报错信息。比如脚本生成的文件,zabbix用户是否具有其权限。如果没有问题,确认配置文件指定的脚本路径是否正确。

php-fpm

服务器没有配置php获取数据的php配置文件,Userparameter,添加配置文件

UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://host/status?xml" | grep "<$1>" | awk -F'>|<' '{ print $$3}'

开启nginx对php状态的监控:
打开nginx配置文件添加如下内容:

        #监控php
        location /status {
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
        }

reload nginx 并重启zabbix-agent

tcp监控

问题:通过执行脚本加参数可以获取到本机tcp数据,但是服务端zabbix_get获取到报错信息提示权限不足
**方法**tcp监控脚本有生成文件到tmp路径下,注意生成文件的属主。zabbix用户是否对其有权限。
通过更改脚本,在生成文件后,更改文件的属主。
zabbix服务端用zabbix_get获取数据成功。

posted @ 2018-06-27 15:07  李庆喜  阅读(437)  评论(1编辑  收藏  举报