前言

Zabbix版本迭代很快,而且每个版本都会有很多新特性,有是有一个不起眼的小的更新却造成很多老司机翻车,以下主要介绍Zabbix几个常见的用Tips

密码重置

在使用zabbix的过程中由于默认密码过于简单,往往会修改密码并配置为自动登录,时间一长往往忘记密码,造成无法登录的情况,这种情况就需要重置密码。Zabbix的密码存储在数据库中,可通过数据库重置。在Zabbix 5.0版本之前,zabbix用户密码使用MD5加密方式存储,从5.0版本开始使用Bcrypt加密方式。BCrypt是一种跨平台的文件加密工具,使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。它是一种可生成随机盐值的单向Hash加密算法,Hash值中包含了上一步生成的盐值(22个字符)的不可逆加密算法。同一种明文,每次被加密后的密文都不一样,并且不可反向破解生成明文,破解难度非常大。大大提升了系统的安全性,因此要重置5.0以后版本的用户密码就需要注意,不能再使用MD5加密方式生成的密码。 可按照以下方法对zabbix的Admin用户密码进行重置 MySQL数据库

mysql -uzabbix -p
use zabbix;
update users SET passwd='$2y$10$92nDno4n0Zm7Ej7Jfsz8WukBfgSS/U0QkIuu8WkJPihXBb2A1UrEK' where userid=1;
quit;

PostgreSQL

su - postgres
psql
\c zabbix;
update users SET passwd='$2y$10$92nDno4n0Zm7Ej7Jfsz8WukBfgSS/U0QkIuu8WkJPihXBb2A1UrEK' where userid=1;
、q

重置后即可使用账号:Admin 密码:zabbix 登录系统,注意账号Admin的A为大写,区分大小写。

API调用

Zabbix提供丰富切完备的API,使用Grafana对接zabbix API实现炫酷的大屏及图表是个很流行的操作。在使用Grafana对接zabbix数据时需要填写zabbix的API地址,这一步很多人找不到和无法验证的问题。zabbix的API地址为zabbix的访问地址+api_jsonrpc.php,如果不确定可以使用curl命令判断.

curl -v http://172.16.66.70:8080/api_jsonrpc.php

使用一个能打开zabbix页面的地址,后面加api_jsonrpc.php,

* About to connect() to 172.16.66.70 port 8080 (#0)
*   Trying 172.16.66.70...
* Connected to 172.16.66.70 (172.16.66.70) port 8080 (#0)
> GET /api_jsonrpc.php HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 172.16.66.70:8080
> Accept: */*
>
< HTTP/1.1 412 Precondition Failed
< Server: nginx/1.18.0
< Date: Mon, 07 Nov 2022 15:43:59 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Methods: POST
< Access-Control-Max-Age: 1000
<
* Connection #0 to host 172.16.66.70 left intact

**如果看到HTTP/1.1 412 Precondition Failed则表示此地址正确,可填入granfa插件里的api地址。**返回其他错误,表示api地址填写错误,可尝试添加/zabbix/的后缀比如http://172.16.66.70:8080/zabbix/api_jsonrpc.php 从zabbix 5.4开始可在页面上新建API Token 1 同时支持配置过期时间、启用、禁用等操作,添加后Token只显示一次,建议复制并保存到本地。 2 调用API时在Auth字段直接带入Token即可,

{
    "jsonrpc": "2.0",
    "method": "item.get",
    "params": {
			"countOutput":"1",
			 "filter": {
			 "state": "1"
			 }
    },
    "id": 2,
    "auth": "4fa51a0c8033b452857bf06c35e41295dcb0ee22506b768edb0720d0093e71f2"
}

无需使用账号和密码进行登录后再获取Token,规范和简化了Token管理。

远程命令

Zabbix支持通过Zabbix Server、Zabibx Proxy、Zabbix Agent在主机上执行自定义命令,利用此特性配合Trigger Action可实现简单的故障自愈功能。在zabbix6.0之前版本,直接在Action的Operations选项卡里填入对应的远程命令即可,从6.0版本开始,需要先在Administrators–Scripts里添加脚本,才能在Operations选项卡里选中 3 此功能加强了对脚本的统一管理,增加了脚本的复用性。可以把常用的一些脚本添加进来, 4 使用时选择即可,无需再次添加。 5 默认情况下,远程命令都以系统zabbix用户来执行,如部分命令需使用root权限,需要使用visudo命令为zabbix用户配置对应命令的sudo执行权限。例如:为zabbix用户配置重启apache服务的权限:

# allows 'zabbix' user to restart apache without password.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart

为安全考虑,建议配置指定命令即可,不配置为ALL。 如命令在界面上显示已执行,实际却未执行,建议配置LogRemoteCommands参数或调整日志级别为Debug模式,查看具体日志进行分析解决

如果觉得我的文章对您有用,请关注我的公众号,有更多技术干货! 微信