docker部署Prometheus+Grafana+alertmanager,手工部署node-exporter,使用Micrometer监控Spring Boot项目jvm
目录
六、安装alertmanager,集成进prometheus
本文主要介绍docker部署安装Prometheus、Grafana、alertmanager,手工部署node-exporter,简单使用Micrometer监控Spring Boot项目,查看jvm。
一、开启防火墙
1.涉及到的端口9090,9100,3000,9093,8082(Spring Boot项目端口),如果用到阿里云服务器,提前在阿里云服务器的安全组开启

2.服务器上开启防火墙
2.1 systemctl status firewalld 命令查看一下防火墙的状态,如果当前是dead状态,即防火墙未开启。
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
2.2 通过 systemctl start firewalld 命令开启防火墙
2.3 修改防火墙策略,允许访问9090,9100,3000,9093端口,针对不同的机器,不同的项目开启不同的端口,Springboot项目端口8082和node-exporter端口9100单独放在47.98.174.128机器上,9090(Prometheus),3000(Grafana),9093(alertmanager)放在118.31.34.174机器上
firewall-cmd --zone=public --add-port=2375/tcp --permanent
#更新防火墙的设置,使上面的修改生效
firewall-cmd --reload
查看防火墙开放状态:
#查看所有打开的端口
firewall-cmd --zone=public --list-ports
47.98.174.128开启的端口
[root@iZbp10wt819rbt5jgpyn9xZ ~]# firewall-cmd --zone=public --list-ports
2375/tcp 9100/tcp
118.31.34.174开启的端口
[root@iZbp1b53i1ykx74fyf61sxZ ~]# firewall-cmd --zone=public --list-ports
2375/tcp 9090/tcp 3000/tcp 9093/tcp
二、Springboot配置
application-dev.yml配置
server:
port: 8082
servlet:
context-path: "/sbSecDemo"
management:
endpoint:
health:
show-details: always #开启完整的健康检测信息
shutdown:
enabled: true #启用 shutdown 端点,默认是未启用的
prometheus:
enabled: true
endpoints:
web:
exposure:
include: "health,info,shutdown,prometheus" #对外公开 health,info,shutdown 端点,默认只会公开前两个 auth认证记得放开
metrics:
tags:
application: "sbSecDemoPort"
export:
prometheus:
enabled: true
pom.xml配置,要增加下面2个配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<!-- <version>1.2.1</version>-->
<!-- 不能要这个版本,否则报ClassNotFoundException: io.micrometer.prometheus.HistogramFlavor -->
</dependency>
部署到 47.98.174.128机器上
如果想了解更多Springboot集成 JVM (Micrometer)监控,下面这一篇值得参考,好好研究
老王,快给你的SpringBoot做个埋点监控吧!-CSDN博客
当然仅仅看这一篇还不够,可以顺着这篇博客,查看推荐其他的博客,感觉这个集成监控,想要玩的溜,需要经验积累和摸索,联系
三、部署node-exporter
1.官方不建议通过Docekr方式部署node-exporter,因为node-exporter 需要访问主机系统
node-exporter 可以采集物理机、虚拟机、云主机等监控指标数据,能够采集到的指标包括 CPU, 内存,磁盘,网络,文件数等信息.
手工部署node-exporter
# 下载
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
# 解压
tar -xvf node_exporter-1.1.2.linux-amd64.tar.gz
cd node_exporter-1.1.2.linux-amd64
# 启动
nohup ./node_exporter --web.listen-address=":9100" &
部署成功,通过 curl 47.98.174.128:9100看能否打通
访问 http:// 47.98.174.128:9100 出现下述截图说明安装成功

四、部署prometheus
1.下载镜像包
docker pull prom/prometheus
2、创建prometheus挂载目录
mkdir /opt/prometheus
cd /opt/prometheus
# /opt/prometheus/data目录,准备用来挂载放置prometheus的数据
# /opt/prometheus/config目录,准备用来放置prometheus的配置文件
# /opt/prometheus/rules目录,准备用来挂载放置prometheus的规则文件
mkdir -p /opt/prometheus/{data,config,rules}
3 # 授权相关文件夹权限
chmod -R 777 /opt/prometheus/data
chmod -R 777 /opt/prometheus/config
chmod -R 777 /opt/prometheus/rules
cd /opt/prometheus/config
touch prometheus.yml
chmod -R 777 prometheus.yml
cd /opt/prometheus/rules
chmod -R 777 rules.yml
2. 创建prometheus配置文件
vim /opt/prometheus/prometheus.yml
global:
scrape_interval: 15s
scrape_timeout: 15s
evaluation_interval: 60s
external_labels:
monitor: 'codelab-monitor'
alerting:
alertmanagers:
- static_configs:
- targets:
- 118.31.34.174:9093
rule_files:
- /etc/prometheus/rules/*.rules
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: '/monitor/actuator/prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: prometheus2
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: export
static_configs:
- targets: ['47.98.174.128:9100']
labels:
instance: localhost
- job_name: 'spring'
static_configs:
- targets: ['47.98.174.128:8082']
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: '/sbSecDemo/actuator/prometheus'
注意,容易出Bug
prometheus.yml要严格遵守yml规范,我在这里反反复复耗费了几个小时,就因为格式的问题,启动不成功,各种检查也看不出来哪里格式出了问题,最后搜索对应的配置,原封不动复制别人成功的,在原来的基础上改,才解决了格式不规范的问题
其中yml中所有的scrape_timeout的时间要小于等于scrape_interval
targets: ['47.98.174.128:8082']是开发的SpringBoot项目部署的公网ip和端口
其中metrics_path: '/sbSecDemo/actuator/prometheus' 中的url配置actuator/prometheus是固定的,/sbSecDemo是取自下图,也就是这里配置什么,/actuator/prometheus前面就是什么

如果项目中还使用了Spring Security,还需要配置不进行鉴权,允许调用

否则启动prometheus后,打开
http://118.31.34.174:9090/targets
其中 http://47.98.174.128:8082/sbSecDemo/actuator/prometheus,报server returned HTTP status 404 Not Found,根本不知道哪里出问题。
3. 启动prometheus
# config.file:指定容器中,配置文件的位置
# web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://118.31.34.174:9090/-/reload
# -v /etc/localtime:/etc/localtime:ro表示让容器使用宿主机的时间, :ro表示只读(注:此方式只针对宿主机和容器的时区文件均为/etc/localtime)
docker run --name prometheus -d -p 9090:9090 -v /opt/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml -v /opt/prometheus/rules.yml:/etc/prometheus/rules.yml -v /opt/prometheus/data:/etc/prometheus/data prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-lifecycle
7、查看端口状态
netstat -antupl |grep 9090
4.访问地址
http://118.31.34.174:9090,选择targets,出现一下图即为安装prometheus成功

五、部署grafana
1.创建挂载数据目录
# /opt/grafana/data目录,准备用来挂载放置grafana的数据
# /opt/grafana/plugins目录,准备用来放置grafana的插件
# /opt/grafana/config目录,准备用来挂载放置grafana的配置文件
mkdir -p /opt/grafana/{data,plugins,config}
# 授权相关文件夹权限
chmod -R 777 /opt/grafana/data
chmod -R 777 /opt/grafana/plugins
chmod -R 777 /opt/grafana/config
2、设置权限
注:因为这个文件需要写入所以要给一定的权限,这里为了方便测试给777,具体权限要根据具体实际情况而定。
2.启动grafana
1 先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/grafana/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp
2 修改配置文件(需要的话)
# vim /opt/grafana/config/grafana.ini
3. 启动prometheus
# 环境变量GF_SECURITY_ADMIN_PASSWORD:指定admin的密码
# 环境变量GF_INSTALL_PLUGINS:指定启动时需要安装得插件
# grafana-clock-panel代表时间插件
# grafana-simple-json-datasource代表json数据源插件
# grafana-piechart-panel代表饼图插件
docker run -d \
-p 3000:3000 \
--name=grafana \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/grafana/data:/var/lib/grafana \
-v /opt/grafana/plugins/:/var/lib/grafana/plugins \
-v /opt/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \
grafana/grafana
3、查看端口状态
netstat -antupl | grep 3000
4、访问地址
http:// 118.31.34.174:3000
注:默认账号密码都是admin
登录进去以后,我选择的Dashboards是JVM (Micrometer),grafana id = 4701,具体怎么设置data sources,怎么导入Dashboards,怎么选择Dashboards,请参考
基于docker搭建Prometheus+Grafana监控报警系统_docker安装prometheus+grafana+alertmanager-CSDN博客
4.1 JVM (Micrometer)模板监控

4.2 Linux主机详情模板展示的Export

六、安装alertmanager,集成进prometheus
这个请参考这篇,讲的很好,很详细,我这里就不单独说了
docker安装prometheus和grafana_docker安装prometheus grafana-CSDN博客
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)