需求前景:
因公司园区会偶尔停电,断网。服务器重启时微服务会有因数据库启动比服务启动慢导致部分微服务未能正常启动,估因此响应公司需求,部署prometheus监控公司微服务,服务器供电,UPS供电,网络环境正常。
因公司设备,服务器资源紧缺,因此在笔记本电脑上用虚拟机桥接公司网络进行部署监控。
需求:
设备名称 | 数量 | 硬件配置 | IP地址(内网) |
---|---|---|---|
笔记本 | 1 | 12C 16G | 192.168.1.42 |
采用VMware Workstation 16 Pro来作为虚拟机管理
虚拟机名称 | 虚拟机配置 | 网络模式 | IP地址(内网) | 系统版本 |
---|---|---|---|---|
Monitor | 4h 8G | Bridge-桥接模式 | 192.168.1.233 | CentOS7.9 |
部署Prometheus
下载地址:prometheus-2.54.1.linux-amd64.tar.gz
下载后上传至虚拟机
#创建安装管理目录 mkdir /data/install -p #解压tar包 cd /data/install tar xf prometheus-2.54.1.linux-amd64.tar.gz #移动到/usr/local/下 mv prometheus-2.54.1.linux-amd64 /usr/local/prometheus #编写服务启动文件托管prometheus cat > /usr/lib/systemd/system/prometheus.service <<EOF [Unit] Description=Monitor-Prometheus Documentation="https://prometheus.io/docs/introduction/overview/" [Service] ExecStart=/usr/local/prometheus/prometheus \ --web.enable-lifecycle \ #让prometheus支持热加载 --config.file=/usr/local/prometheus/prometheus.yml #指定配置文件 ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WanteBy=multi-user.target EOF #启动prometheus systemctl daemon-reload systemctl enable prometheus.service --now systemctl status prometheus .... Active: active (running) since 一 2024-09-23 14:01:08 CST; 3 days ago .... #浏览器访问192.168.1.233:9090出现页面就没问题了
部署Alertmanager
下载地址:alertmanager-0.27.0.linux-amd64.tar.gz
下载后上传至虚拟机
#解压tar包 cd /data/install tar xf alertmanager-0.27.0.linux-amd64.tar.gz #移动到/usr/local/下 mv alertmanager-0.27.0.linux-amd64 /usr/local/alertmanager #编写服务启动文件托管alertmanager cat > /usr/lib/systemd/system/alertmanager.service <<EOF [Unit] Description=alertmanager [Service] ExecStart=/usr/local/alertmanager/alertmanager \ --config.file=/usr/local/alertmanager/alertmanager.yml ExecReload=/bin/kill/ -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target EOF #启动alertmanager systemctl daemon-reload systemctl enable alertmanager.service --now systemctl status alertmanager ... Active: active (running) since 五 2024-09-27 11:20:38 CST; 2min 5s ago ... #浏览器访问192.168.1.233:9093出现页面就没问题了
微服务暴露Prometheus指标端点
#Springboot添加Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> #以下配置看情况采用 management.endpoint.web.exposure.include=* #暴露所有端点 management.metrics.export.prometheus.enabled=true #启用Prometheus导出器 management.endpoints.web.base-path=“/status” #将/actuator/xxx修改为/status/xxx,防止被猜到 management.endpoints.server.request.metric-name=“application:request” # 自定义接口指标名 management.server.port=10001 #指定端口,默认跟server.port一样,可以防止被猜到 #重启服务查看是否生效 #浏览器访问 http://localhost:port/actuator/prometheus
监控微服务存活
#修改prometheus配置 cd /usr/local/prometheus vim prometheus.yml ... #微服务网关 - job_name: "Capp-gateway" metrics_path: /actuator/prometheus static_configs: - targets: ["xxx.xxx.xxx.xxx:8080"] #微服务登陆认证 - job_name: "Capp-Auth" metrics_path: /actuator/prometheus static_configs: - targets: ["xxx.xxx.xxx.xxx:8081"] #基础数据 - job_name: "Capp-Basic-data" metrics_path: /actuator/prometheus static_configs: