Prometheus监控系统
使用 Prometheus 和 Grafana 构建高效的可视化监控系统
1.Prometheus
Prometheus 是一款开源的系统监控和报警工具包,主要用于监控基于时间序列的数据。它在现代的微服务架构和容器化环境中特别受欢迎,尤其是在 Kubernetes (K8S) 集群中。
1.1核心组件
- Prometheus Server:主要负责抓取和存储时间序列数据,执行查询和计算度量数据。
- Exporters:这些是小型程序,可以在目标系统上运行,并从目标系统中抓取各种指标数据,然后将这些数据提交给 Prometheus。
- Pushgateway:Prometheus 本身是通过 Pull 的方式拉取数据,但 Pushgateway 可以用来接收短期的监控数据,防止数据丢失。
- Alertmanager:处理来自 Prometheus server 的警报,并能够发送通知给用户。
- 客户端库:提供编程接口,以便应用程序可以生成指标。
1.2特点
- 多维数据模型:使用带有时间戳的度量数据和标签 (labels) 来识别每个数据点,这使得它可以灵活地筛选和聚合数据。
- 强大的查询语言 (PromQL):允许用户对存储的数据进行实时查询和计算,非常适合复杂的分析和可视化需求。
1.3安装
下载安装包
# 下载安装包
wget https://github.com/prometheus/prometheus/releases/download/v2.50.1/prometheus-2.50.1.linux-amd64.tar.gz
# 解压缩
tar -zxvf prometheus-2.50.1.linux-amd64.tar.gz
修改prometheus.yml配置文件,在scrape_configs:配置下增加如下配置
- job_name: 'infreeMeeting'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['192.168.1.136:80']
启动脚本,startPrometheus.sh
#!/bin/bash
echo "开始Prometheus服务"
cd /opt/infreeMeeting/prometheus/
./prometheus --config.file=/opt/infreeMeeting/prometheus/prometheus.yml
echo "Prometheus服务已启动"
配置Prometheus服务,ifPrometheusServer.service
[Unit]
Description="infree prometheus server"
After=mysql.service ifMeetingServer.service
[Service]
Type=simple
ExecStart=/bin/bash /opt/infreeMeeting/prometheus/startPrometheus.sh
[Install]
WantedBy=multi-user.target
设置为开机启动
sudo cp ifPrometheusServer.service /usr/lib/systemd/system/
sudo systemctl enable ifPrometheusServer
sudo systemctl start ifPrometheusServer
访问地址:ip:9090
查看服务列表:ip:9090/targets
1.4SpringBoot
Spring Boot 与 Prometheus 的集成,暴露指标给 Prometheus 服务器进行抓取。
添加依赖
org.springframework.boot
spring-boot-starter-actuator
io.micrometer
micrometer-registry-prometheus
yml配置
spring:
application:
name: infreeMeeting
# 监控平台Prometheus
management:
endpoints:
web:
exposure:
include: "*"
metrics:
tags:
application: ${spring.application.name}
若使用了SpringSecurity需要忽略"/actuator/prometheus"接口
2.Grafana
Grafana 是一个非常流行的开源平台,用于可视化时间序列数据,广泛应用于监控系统和数据分析领域。Grafana 可以从多种数据源获取数据,并以图表的形式展示出来,使得数据更加直观易懂。它支持多种数据源,如 Prometheus、InfluxDB、Elasticsearch、Loki 等,并且具有丰富的插件生态系统,可以扩展功能。
2.1主要特性
- 数据源支持:支持多种类型的数据源,如 Prometheus、InfluxDB、MySQL、PostgreSQL 等。
- 仪表板:可以创建包含多个图表的仪表板来展示不同的指标。
- 图表类型:支持多种图表类型,如线图、条形图、热图等。
- 警报系统:可以设置基于特定条件的警报。
- 用户管理和权限控制:支持不同级别的用户权限管理。
- 插件生态系统:大量的社区贡献插件,可以扩展 Grafana 的功能。
- 共享和协作:支持仪表板的共享和协作功能。
- 多租户支持:可以为不同的团队或项目设置独立的工作空间。
2.2安装
下载
wget https://dl.grafana.com/oss/release/grafana-10.4.0.linux-amd64.tar.gz
tar -zxvf grafana-10.4.0.linux-amd64.tar.gz
修改conf/defaults.ini配置文件,设置语言为中文
# Grafana界面默认语言为简体中文
default_language = zh-Hans
# Grafana HTTP服务监听的端口号
http_port = 3001
# 使Grafana在生成链接或通知时使用这个特定的域名或IP地址
domain = 192.168.1.15
启动脚本,startGrafana.sh
#!/bin/bash
echo "开始Grafana服务"
cd /opt/infreeMeeting/grafana/bin/
./grafana-server web
echo "Grafana服务已启动"
配置Grafana服务,ifGrafanaServer.service
[Unit]
Description="infree grafana server"
After=mysql.service ifMeetingServer.service
[Service]
Type=simple
ExecStart=/bin/bash /opt/infreeMeeting/grafana/startGrafana.sh
[Install]
WantedBy=multi-user.target
设置为开机启动
sudo cp ifGrafanaServer.service /usr/lib/systemd/system/
sudo systemctl enable ifGrafanaServer
sudo systemctl start ifGrafanaServer
访问地址:ip:3000,账号密码为admin/admin
官网有很多模版可以使用https://grafana.com/grafana/dashboards/
配置数据源

导入仪表盘

免密登录配置
创建一个组织:infree
conf/defaults.ini配置文件,修改[auth.anonymous]模块的配置
enabled = true
org_name = infree
重启grafana服务
admin账号切换到infree组织下
创建数据源和仪表盘,然后分享仪表盘即可
2.3问题
如果仪表盘很多模板上的图标全部报错This panel requires Angular (deprecated)警告
原因:Grafana在更新到7.0版本后,弃用了AngularJS。在早期的Grafana版本中,某些面板可能依赖于AngularJS。配置下插件自动迁移即可。
conf/defaults.ini配置文件的[feature_toggles]的模块下增加以下配置
autoMigrateOldPanels = true
- 本文标签: Java
- 本文链接: https://lanzi.cyou/article/13
- 版权声明: 本文由咖啡豆原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权