Docker部署HertzBeat实时监控告警系统
作者:菜鸟厚非
一、简介
HertzBeat 赫兹跳动 是一个易用友好的开源实时监控告警系统,无需 Agent,高性能集群,兼容 Prometheus,提供强大的自定义监控和状态页构建能力。有下面这些特点:
- 集 监控+告警+通知 为一体,支持对应用服务,应用程序,数据库,缓存,操作系统,大数据,中间件,Web服务器,云原生,网络,自定义等监控阈值告警通知一步到位。
- 易用友好,无需 Agent,全 WEB 页面操作,鼠标点一点就能监控告警,零上手学习成本。
- 将 Http, Jmx, Ssh, Snmp, Jdbc, Prometheus 等协议规范可配置化,只需在浏览器配置监控模版 YML 就能使用这些协议去自定义采集想要的指标。
- 兼容 Prometheus 的系统生态并且更多,只需页面操作就可以监控 Prometheus 所能监控的。
- 高性能,支持多采集器集群横向扩展,支持多隔离网络监控,云边协同。
- 自由的告警阈值规则,邮件 Discord Slack Telegram 钉钉 微信 飞书 短信 Webhook Server酱 等方式消息及时送达。
二、部署
HertzBeat 部署,采用 主服务节点 + 采集器集群 方式,其中采集器集群是可选的。
2.1 主服务节点
启动容器前,先下载 application.yml 和 sureness.yml 文件到物理机,这两个文件是 HertzBeat 的默认配置文件。在启动容器时会进行映射,下载完成后可以根据部署命令,放置在对应的文件夹下。
打开 Docker 在终端执行下面命令,即可启动一个 hertzbeat 主服务节点。这里安装的是 v1.5.0 版本,如果需要安装其他或者最新版本,可以到 Docker Hub 中进行查找。
docker run -d -p 1157:1157 -p 1158:1158 ` -e LANG=zh_CN.UTF-8 ` -e TZ=Asia/Shanghai ` -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\data:/opt/hertzbeat/data ` -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\logs:/opt/hertzbeat/logs ` -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\config\application.yml:/opt/hertzbeat/config/application.yml ` -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\config\sureness.yml:/opt/hertzbeat/config/sureness.yml ` --restart=always ` --name hertzbeat-v1.5.0 ` tancloud/hertzbeat:v1.5.0
-参数 -e LANG=zh_CN.UTF-8 设置系统语言。
-参数 -e TZ=Asia/Shanghai 设置系统时区。
-参数 -p 1157:1157 -p 1158:1158 映射容器端口到主机端口,前面是宿主机的端口号,后面是容器的端口号。1157是WEB端口,1158是集群端口。
-参数 -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\data:/opt/hertzbeat/data 可选,数据持久化,挂载内置的H2数据库文件到本地主机,保证数据不会因为容器的创建删除而丢失。
-参数 -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\logs:/opt/hertzbeat/logs 可选,不需要可删除,挂载日志文件到本地主机,保证日志不会因为容器的创建删除而丢失,方便查看。
-参数 -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\config\application.yml:/opt/hertzbeat/config/application.yml 映射 application.yml 配置文件。启动容器前,需要先下载 application.yml 文件到物理机。
-参数 -v C:\ProgramDatas\Docker\Containers\hertzbeat-v1.5.0\config\sureness.yml:/opt/hertzbeat/config/sureness.yml 映射 sureness.yml 配置文件。启动容器前,需要先下载 sureness.yml 文件到物理机。
2.2 采集器集群(可选)
打开 Docker 在终端执行下面命令,即可启动一个 hertzbeat-collector 采集器节点。这里安装的是 v1.5.0 版本,如果需要安装其他或者最新版本,可以到 Docker Hub 中进行查找。
docker run -d ` --restart=always ` -e IDENTITY=custom-collector-1 ` -e MODE=public ` -e MANAGER_HOST=host.docker.internal ` -e MANAGER_PORT=1158 ` -v C:\ProgramDatas\Docker\Containers\hertzbeat-collector-1_v1.5.0\logs:/opt/hertzbeat-collector/logs ` --name hertzbeat-collector-1_v1.5.0 ` tancloud/hertzbeat-collector:v1.5.0
docker run -d ` --restart=always ` -e IDENTITY=custom-collector-2 ` -e MODE=public ` -e MANAGER_HOST=host.docker.internal ` -e MANAGER_PORT=1158 ` -v C:\ProgramDatas\Docker\Containers\hertzbeat-collector-2_v1.5.0\logs:/opt/hertzbeat-collector/logs ` --name hertzbeat-collector-2_v1.5.0 ` tancloud/hertzbeat-collector:v1.5.0
-参数 -e IDENTITY=custom-collector-name 可选,设置采集器的唯一标识名称。注意多采集器时采集器名称需保证唯一性。
-参数 -e MODE=public 配置运行模式(public or private), 公共集群模式或私有云边模式。
-参数 -e MANAGER_HOST=host.docker.internal 设置连接的主 HertzBeat 服务地址。
-参数 -e MANAGER_PORT=1158 可选,设置连接的主 HertzBeat 服务地址端口,默认 1158 端口。
-参数 -v C:\ProgramDatas\Docker\Containers\hertzbeat-collector-1_v1.5.0\logs:/opt/hertzbeat-collector/logs 可选,不需要可删除,挂载日志文件到本地主机,保证日志不会因为容器的创建删除而丢失,方便查看。
2.3 使用 DB 存储指标数据(可选)
HertzBeat 历史指标数据存储依赖数据库,推荐使用长期支持的VictoriaMetrics 时序数据库。若不配置时序数据库,HertzBeat 则只会留最近一小时历史数据,建议生产环境配置。
2.3.1 VictoriaMetrics DB
在终端执行下面命令,即可启动一个 VictoriaMetrics 服务。这里安装的是 v1.95.1 版本,如果需要安装其他或者最新版本,可以到 Docker Hub 中进行查找。
docker run -d ` --restart=always ` --name victoria-metrics_v1.95.1 ` -v C:\ProgramDatas\Docker\Containers\victoria-metrics_v1.95.1\data:/victoria-metrics-data ` -p 8428:8428 ` victoriametrics/victoria-metrics:v1.95.1
-VictoriaMetrics 数据库默认用户名是 root,密码 root 。
-参数 --restart always 在容器退出时总是重启容器。
-参数 -v C:\ProgramDatas\Docker\Containers\victoria-metrics_v1.99.0\data:/victoria-metrics-data 将容器内的 /victoria-metrics-data 目录映射到物理机 C:\ProgramDatas\Docker\Containers\victoria-metrics_v1.99.0\data 目录下。
然后,修改 application.yml 文件,配置 VictoriaMetrics 数据库连接。修改 warehouse.store.jpa.enabled 参数为 false,配置 warehouse.store.victoria-metrics 数据源参数 url、username、password,并启用 enabled 为 true。重启 HertzBeat,使配置生效。
warehouse: store: # 关闭默认JPA jpa: enabled: false # 启用 victoria-metrics victoria-metrics: enabled: true url: http://host.docker.internal:8428 username: root password: root
2.3.2 InfluxDB
docker run -d -p 8086:8086 ` --restart always ` --name influxdb-1.8 ` -v C:\ProgramDatas\Docker\Containers\influxdb-1.8:/var/lib/influxdb ` influxdb:1.8
然后,修改 application.yml 文件,配置 VictoriaMetrics 数据库连接。
warehouse: store: # 关闭默认JPA jpa: enabled: false influxdb: enabled: true server-url: http://localhost:8086 username: root password: root expire-time: '30d' replication: 1
2.4 使用 DB 存储系统元数据(可选)
HertzBeat 除了支持使用默认内置的 H2 数据库外,还可以切换为使用 MYSQL 存储监控信息,告警信息,配置信息等结构化关系数据。建议生产环境配置,以提供更好的性能。
打开 Docker Desktop,在 PowerShell 执行下面命令,即可启动一个 MySQL 服务。这里安装的是 5.7 Tag版本。
docker run -itd -p 3306:3306 ` --restart always ` --name mysql-5.7 ` -v C:\ProgramDatas\Docker\Containers\mysql-5.7\data:/var/lib/mysql ` -v C:\ProgramDatas\Docker\Containers\mysql-5.7\conf.d:/etc/mysql/conf.d ` -e MYSQL_ROOT_PASSWORD=123abcABC@! ` mysql:5.7
-参数 --restart always 在容器退出时总是重启容器。
-参数 -e MYSQL_ROOT_PASSWORD=123abcABC@! 是环境变量,指定了 MySQL 默认 root 用户的密码。更多环境变量信息可以访问 Environment Variables。
-参数 -v C:\ProgramDatas\Docker\Containers\mysql-5.7\data:/var/lib/mysql 将容器内的 /var/lib/mysql 数据目录映射到物理机的 C:\ProgramDatas\Docker\Containers\mysql-5.7\data 目录下。
参数 -v C:\ProgramDatas\Docker\Containers\mysql-5.7\conf.d:/etc/mysql/conf.d 将容器内的 /etc/mysql/conf.d 配置目录映射到物理机的 C:\ProgramDatas\Docker\Containers\mysql-5.7\conf.d 目录下。
在 MySQL 创建一个名为 hertzbeat 的数据库,然后修改 application.yml 文件,配置 MySQL 数据库连接。修改 spring.datasource 数据源参数,配置 driver-class-name、username、password、url。重启 HertzBeat,使配置生效。
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 123abcABC@! url: jdbc:mysql://host.docker.internal:3306/hertzbeat?useUnicode=true&characterEncoding=utf-8&useSSL=false
三、HertzBeat UI
打开浏览器,访问 1157 端口 http://localhost:1157 即可看到 HertzBeat 界面,系统默认账号密码 admin/hertzbeat。
如下,采集器集群菜单中,可以管理集群中的所有节点。
到此这篇关于Docker部署HertzBeat实时监控告警系统的文章就介绍到这了,更多相关Docker HertzBeat实时监控系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!