前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >密码重置、API调用、远程命令,Zabbix用户必知的几个技巧

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

作者头像
Zabbix
发布2022-12-12 08:21:55
1.5K0
发布2022-12-12 08:21:55
举报
文章被收录于专栏:Zabbix中国官方

作者:张思德,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 数据库

代码语言:javascript
复制
mysql -uzabbix -p
use zabbix;
update users SET passwd='$2y$10$92nDno4n0Zm7Ej7Jfsz8WukBfgSS/U0QkIuu8WkJPihXBb2A1UrEK' where userid=1;
quit;

PostgreSQL

代码语言:javascript
复制
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命令判断.

代码语言:javascript
复制
curl -v http://172.16.66.70:8080/api_jsonrpc.php

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

代码语言:javascript
复制
* 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 即可,

代码语言:javascript
复制
{
    "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 服务的权限:

代码语言:javascript
复制
# allows 'zabbix' user to restart apache without password.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作者:张思德,Zabbix社区签约专家,2017-2022Zabbix中国峰会讲师
  • 前言
    • 密码重置
    • API 调用
    • 远程命令
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档