9B2.actuator/admin监控
9B2.actuator/admin监控
wings体系下,默认启动了基本的监控
- Wings 启停和日志通知
- Hazelcast Management Center
- Spring Boot Admin
- Prometheus Grafana
- Sentry 日志监控
9B2.1.启停和日志
Wings自身的监控,分为启动脚本(wings-starter.sh)和程序自身(app)两个部分,默认使用钉钉通知。
- wings-starter.sh - 通过cron: (1)pid是否存在,(2)log是否增长
- wings app - 启动,停止,JVM指标,以及日志中WARN的信息
1a.启动脚本监控
通过warn
参数,执行监控功能,建议使用crontab定期执行,需要配置参数如下
WARN_TXT
- 前置文本,如钉钉中的关键词等WARN_AGO
- 秒数,非空时且日志在N秒内未增长,则报告WARN_RUN
- webhook,非空时,用来发生报告,默认钉钉
1b.程序自身监控
程序自身监控的缺点是【谁来监控监控者】,需要程序自身能够健康的执行。 默认配置详见wings-monitor.properties,需要关注的配置项有,
spring.application.name
- 定位app,必须设置wings.slardar.monitor.cron
- 默认每17分钟扫描一次.log.default.file
- 默认日志文件logging.file.name
.view.domain
- 对外的查看日志的url,建议设置.ding-notice
- 钉钉设置,默认使用monitor
9B2.2.hazelcast监控
Hazelcast版本随spring boot同步更新,主要用作caching, Session,其次是Event和Lock,Messaging等。
Hazelcast IMDG 开源版是Apache2许可证(包括独立部署和SpringBoot中的Runtime形式), 相比于Pro和Enterprise版,主要缺少了Persistence和Security suite,在内网中影响不大。
在wings的基本应用中,一般只有3个节点(admin/devops/front)构成的集群,使用log和ManagementCenter监控。 因3节点集群的强壮性刚好够用,以CP Subsystem Unsafe Mode运行,仅能提供弱一致性保证,不如CP的强一致性。
- CP Subsystem Management APIs are not available.
- split-brain protection is not supported.
Management Center 无许可时,仅能监控最多3个成员的集群。 使用时注意要设置强壮密码,公网上要禁用一些不安全选项,如script
wget https://repository.hazelcast.com/download/management-center/hazelcast-management-center-5.0.4.zip
unzip hazelcast-management-center-5.0.4.zip
cd hazelcast-management-center-5.0.4
nohup bin/start.sh 8090 >hazelcast-management-center.log 2>&1 &
访问 http://localhost:8090,同时设置好足够强度的密码即可。 wings-starter.sh同级目录下生成diagnostics.log,可查看Metric及其他信息。wings默认的period.seconds是600,即10分钟。
9B2.3.Spring Boot Admin
以devops为server,其他app为client,自动启动和注册,参考wings-boot-admin.properties配置。 其中需要注意的是,用户权限设置,密码是否强壮,钉钉token和关键词是否正确。
其中,server和client间是basic验证的wings定制版,以时间戳和md5摘要,取代明文传送密码,但安全性仍不高。 因此,除了密码强壮外,尽量注意内网隔离,传输层加密,尽量使用https等。
如演示工程结构一样,在devops的dependency中增加spring-boot-admin-starter-server 而在其他boot应用,如admin中,增加spring-boot-admin-starter-client依赖。 同时,分别配置wings-boot-admin.properties。 演示工程中在common统一配置的。
9B2.4.Prometheus Grafana
使用 prometheus pull数据。 若需要push形式,可使用 pushgateway
prometheus 仅作为数据库,并且裸奔,没有用户验证,需要自己保护
# 检查 prometheus
curl -G http://localhost:8093/actuator/prometheus -u "boot-admin-client:${DING_TALK_TOKEN}"
# prometheus配置文件
tee /Users/trydofor/Docker/prometheus/conf/prometheus.yml << EOF
scrape_configs:
- job_name: "wings-winx"
metrics_path: "/actuator/prometheus"
static_configs:
- targets:
- "host.docker.internal:8091"
- "host.docker.internal:8092"
- "host.docker.internal:8093"
basic_auth:
username: "boot-admin-client"
password: "${DING_TALK_TOKEN}"
EOF
# 启动docker
docker run -d \
--name prometheus \
--restart=unless-stopped \
-v /Users/trydofor/Docker/prometheus/conf:/etc/prometheus \
-v /Users/trydofor/Docker/prometheus/data:/prometheus \
-p 9090:9090 \
prom/prometheus
# prometheus配置文件
tee /Users/trydofor/Docker/grafana/conf/grafana.ini << EOF
[security]
admin_user = admin
admin_password = ${DING_TALK_TOKEN}
EOF
# 启动docker
docker run -d \
--name grafana-oss \
--restart=unless-stopped \
-v /Users/trydofor/Docker/grafana/conf:/etc/grafana \
-v /Users/trydofor/Docker/grafana/data:/var/lib/grafana \
-p 3000:3000 \
grafana/grafana-oss
然后导入 预定义的面板。
9B2.5.Sentry 日志监控
#https://develop.sentry.dev/self-hosted/
wget -O sendtry.tgz https://github.com/getsentry/self-hosted/archive/refs/tags/22.2.0.tar.gz
tar xzf sendtry.tgz
cd self-hosted-22.2.0/
./install.sh
# https://docs.docker.com/engine/install/ubuntu/
# https://docs.docker.com/engine/install/linux-postinstall/
# 修改mail.*对应的邮件配置项,
vi sentry/config.yml
#mail.backend: 'smtp'
#mail.host: 'smtp.exmail.qq.com'
#mail.port: 465
#mail.use-ssl: true
docker-compose up -d
# 修改其他配置,可以先stop再up
docker-compose stop