Skip to content
37 changes: 37 additions & 0 deletions hertzbeat-manager/src/main/resources/define/app-mysql.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# MySQL Account Expiry

HertzBeat supports monitoring of MySQL database account password expiration,
allowing administrators to detect expired or soon-to-expire accounts and
configure alerts.

---

## Metric: account_expiry

This metric collects password expiration information for all MySQL users.

### Fields

| Field | Description |
|------|-------------|
| user | MySQL user name |
| host | Host from which the user can connect |
| days_left | Remaining days before password expires. NULL means no expiry policy |
| password_expired | Whether the password is already expired (Y or N) |

---

## SQL

The metric is collected using:

```sql
SELECT
user,
host,
password_expired,
IF(password_lifetime IS NULL,
NULL,
password_lifetime - DATEDIFF(NOW(), password_last_changed)
) AS days_left
FROM mysql.user;
66 changes: 66 additions & 0 deletions hertzbeat-manager/src/main/resources/define/app-mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1178,3 +1178,69 @@ metrics:
privateKey: ^_^sshPrivateKey^_^
privateKeyPassphrase: ^_^sshPrivateKeyPassphrase^_^
shareConnection: ^_^sshShareConnection^_^
- name: account_expiry
priority: 100
i18n:
zh-CN: 数据库账号有效期
en-US: Account Expiry
ja-JP: アカウント有効期限
fields:
- field: user
type: 1
label: true
i18n:
zh-CN: 用户
en-US: User
ja-JP: ユーザー
- field: host
type: 1
label: true
i18n:
zh-CN: 主机
en-US: Host
ja-JP: ホスト
- field: days_left
type: 0
i18n:
zh-CN: 剩余天数
en-US: Days Left
ja-JP: 残り日数
- field: password_expired
type: 1
i18n:
zh-CN: 是否已过期
en-US: Password Expired
ja-JP: 期限切れ

protocol: jdbc
jdbc:
host: ^_^host^_^
port: ^_^port^_^
platform: mysql
username: ^_^username^_^
password: ^_^password^_^
database: mysql
timeout: ^_^timeout^_^
queryType: multiRow
sql: |
SELECT
user,
host,
IF(password_lifetime IS NULL,
NULL,
password_lifetime - DATEDIFF(NOW(), password_last_changed)
) AS days_left,
password_expired
FROM mysql.user;
url: ^_^url^_^
sshTunnel:
enable: ^_^enableSshTunnel^_^
host: ^_^sshHost^_^
port: ^_^sshPort^_^
timeout: ^_^sshTimeout^_^
username: ^_^sshUsername^_^
password: ^_^sshPassword^_^
privateKey: ^_^sshPrivateKey^_^
privateKeyPassphrase: ^_^sshPrivateKeyPassphrase^_^
shareConnection: ^_^sshShareConnection^_^

Loading