Zabbix_小Z
作者Zabbix_小Z·2022-12-08 15:15
Zabbix大中华区培训师·上海宏时数据系统有限公司

密码重置、API调用、远程命令,Zabbix用户必知的几个技巧

字数 3162阅读 484评论 0赞 0

作者:张思德,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模式,查看具体日志进行分析解决。

往期推荐

Zabbix原厂给中国用户的一封信,4大理由消除使用限制的担忧

干货|Webhook配置钉钉/飞书机器人告警

Zabbix6.2惊喜发布!特别优化中大型环境部署的性能!

国产适配升级|UMOP统一监控运维平台与统信海光兼容性互认证

扫一扫|加入技术交流群

微信号|17502189550

备注“使用Zabbix年限+企业+姓名”

5000+用户已加入!

一个人走得快,一群人走得远!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广