作者:张思德,Zabbix社区签约专家,2017-2022Zabbix中国峰会讲师
 前言
 Zabbix版本迭代很快,而且每个版本都会有很多新特性,有时有一个不起眼的小的更新却造成很多老司机翻车,以下主要介绍Zabbix几个常见的知识点。
密码重置
 在使用Zabbix 的过程中由于默认密码过于简单,往往会修改密码并配置为自动登录,时间一长往往忘记密码,造成无法登录的情况,这种情况就需要重置密码。Zabbix 的密码存储在数据库中,可通过数据库重置。在Zabbix5.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

 
同时支持配置过期时间、启用、禁用等操作,添加后 Token 只显示一次,建议复制并保存到本地。
 
调用 API 时在 Auth 字段直接带入 Token 即可,
{
 “jsonrpc”: “2.0”,
 “method”: “item.get”,
 “params”: {
 “countOutput”:“1”,
 “filter”: {
 “state”: “1”
 }
 },
 “id”: 2,
 “auth”: “4fa51a0c8033b452857bf06c35e41295dcb0ee22506b768edb0720d0093e71f2”
 }
 无需使用账号和密码进行登录后再获取 Token,规范和简化了 Token 管理。
远程命令
 Zabbix支持通过ZabbixServer、Zabbix Proxy、Zabbix Agent 在主机上执行自定义命令,利用此特性配合 Trigger Action 可实现简单的故障自愈功能。在Zabbix6.0 之前版本,直接在 Action 的 Operations 选项卡里填入对应的远程命令即可,从 6.0 版本开始,需要先在 Administrators—Scripts 里添加脚本,才能在 Operations 选项卡里选中。
 
此功能加强了对脚本的统一管理,增加了脚本的复用性。可以把常用的一些脚本添加进来,
 
使用时选择即可,无需再次添加。
 
默认情况下,远程命令都以系统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模式,查看具体日志进行分析解决。








![[附源码]Python计算机毕业设计Django游戏论坛网站](https://img-blog.csdnimg.cn/199ab13370044d3d934fe01a229605e1.png)










![[附源码]Python计算机毕业设计Django在线项目管理](https://img-blog.csdnimg.cn/b82537c7679b4fcf8f5eca441af35ade.png)