调试zabbix的时候忘记密码可用如下方法重新设定密码。
首先ssh 到zabbix 数据库的服务器,然后登录到mysql 数据库。
mysql -u root -p
zabbix 的密码存储在 database zabbix,table users中,加密方式为MD5,
使用 md5 制作一个秘钥。
echo -n Abc,123. | openssl md5
这样就制作了一个密码为Abc,123.的秘钥,下一步更新数据库表中的密码。
update users set passwd='af417080428aadc82c01e7002d649e92' where userid='1';
其中 那个passwd‘’ 中的一串是用刚才md5 生成的秘钥,id 为1 的账号默认管理账号,更新后就可以使用新密码登录zabbix了。
关于zabbix 自定义key:
首先更改zabbix-agentd.conf,将
UnsafeUserParameters=0
那行的注释删掉,然后将0改成1。
将自定义key的名称及获取该值的方法写在zabbix_agentd.d 这个目录下的conf 中,可一自己重建一个conf 也可以使用他自带的 userparameter_mysql.conf
按照该文件中上面key的定义方法插入一行,这里我使用我自己的脚本。
UserParameter=net.DNS[*],/etc/zabbix/userkey/net.DNS.sh $1
我用net.DNS.sh 来获取目标机器DNS的服务状态,如果端口未关闭就返回1,否则返回0,那个中括号.使用来传参数的。
我将这个脚本放在../userkey中(目录是自己建的),下面是脚本内容
nmap $1 -sT -p 53 | grep 53 | awk '{if($2=="open") {print 1} else {print 0}}'
一个很简单的脚本,返回0和1.
调试时遇到的问题:
以上步骤都弄完以后可以使用
zabbix_agentd -t net.DNS[192.168.1.1]
测试自定义key 是否能用,如果不返回错误就没问题
重启client agentd
service zabbix_agent restart
然后使用
zabbix_get -s 127.0.0.1 -k net.DNS[192.168.1.1]
测试从server端调用client 的key,测试没问题后就可以在zabbix 中使用了。
上面那个重启服务命令非常重要,否则会提示
ZBX_NOTSUPPORTED: Unsupported item key.
碰到的第二个问题重启服务的时候提示
zabbix_agentd [21827]: invalid entry [b0VIM 7.2] (not following "parameter=value" notation) in config file [<pre name="code" class="plain">rm /etc/zabbix/zabbix_agentd.d/.userparameter_mysql.conf.swp<span style="font-family: Arial, Helvetica, sans-serif;">], line 1</span>
百度一圈也没发现这是个什么问题。
然后 进去删掉那个文件
/etc/zabbix/zabbix_agentd.d/.userparameter_mysql.conf.swp
重启zabbix_agentd 还是不行提示
Starting Zabbix agent: zabbix_agentd [22706]: unknown parameter [nmap $1 -sT -p 53 | grep 53 | awk '{if($2] in config file [/etc/zabbix/zabbix_agentd.d/net.DNS.sh], line 2
[FAILED]
后来明白了,我原来把那个脚本放在那个目录中,在服务启动的时候zabbix_agent 会扫描所有该目录的文件,不只是.conf
扫描时我的脚本不能匹配自定义key的规范所以报错,后来将脚本移出该目录并修改userparameter.conf后一切正常。