Prometheus+Grafana监控部署以kafka监控为例

一、背景

Prometheus是由SoundCloud开发的开源监控系统,由GO语言编写而成,采用Pull的方式来获取监控信息,并且提供了多维度的数据模型和灵活的查询接口。Prometheus既支持通过静态文件配置监控对象,还支持自动发现机制,能通过Kubernetes、Consl、DNS等多种方式动态获取监控对象。在数据采集方面,借助GO语言高并发的特性,一个Prometheus设备可以采集数百个节点的监控数据;在数据存储方面,单机Prometheus支持每秒10^6个指标采集,并且还支持大量存储场景下的远程存储。

二、安装prometheus

1、下载二进制对应系统的安装包安装

prometheus官网下载对应系统对应版本的安装包并上传至服务器,如图所示
在这里插入图片描述

2、解压缩并改名

tar -zxvf prometheus-2.41.0.linux-amd64.tar.gz -C /home/server/
mv prometheus-2.41.0.linux-amd64 prometheus
cd promethues

3、配置监控的信息

这里以kafka监控为例

第一步 配置监控信息
vim prometheus.yml
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

   #kafka集群监控
   - job_name: 'kafka'
     static_configs:
      - targets: ['172.17.9.191:9308']
第二步 启动prometheus服务
/home/server/prometheus/prometheus --config.file="/home/server/prometheus/prometheus.yml" &

在浏览器输入ip:9090,如图所示
在这里插入图片描述

第三步 配置启停服务
#编辑prometheus.service服务
vim /lib/systemd/system/prometheus.service

[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/home/server/prometheus/prometheus --storage.tsdb.path=/home/server/prometheus/data --config.file=/home/server/prometheus/prometheus.yml --storage.tsdb.retention.time=50d
[Install]
WantedBy=multi-user.target

#重载系统服务配置
systemctl daemon-reload
#杀掉原先启动的prometheus进程
ps -ef | grep prometheus | grep -v grep | awk '{print $2}' | xargs -I '{}' kill -9 {}
#用服务启动prometheus,停止使用stop
systemctl start prometheus.service
#查看prometheus服务状态
systemctl status prometheus.service
● prometheus.service - https://prometheus.io
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2022-12-20 17:17:43 CST; 7s ago
 Main PID: 15502 (prometheus)
    Tasks: 6
   CGroup: /system.slice/prometheus.service
           └─15502 /home/server/prometheus/prometheus --storage.tsdb.path=/home/server/prometheus/data --config.file=/home/server/prometheus/prometheus.yml --storage.t...

1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.154Z caller=head.go:615 level=info component=tsdb msg="WAL segment loaded" segment=3 maxSegment=5
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.185Z caller=head.go:615 level=info component=tsdb msg="WAL segment loaded" segment=4 maxSegment=5
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.185Z caller=head.go:615 level=info component=tsdb msg="WAL segment loaded" segment=5 maxSegment=5
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.185Z caller=head.go:621 level=info component=tsdb msg="WAL replay completed" checkpoint_re…=38.400998ms
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.188Z caller=main.go:997 level=info fs_type=XFS_SUPER_MAGIC
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.188Z caller=main.go:1000 level=info msg="TSDB started"
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.188Z caller=main.go:1181 level=info msg="Loading configuration file" filename=/home/server...etheus.yml
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.189Z caller=main.go:1218 level=info msg="Completed loading of configuration file" filename=/home/ser…µs
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.189Z caller=main.go:961 level=info msg="Server is ready to receive web requests."
1220 17:17:43 node04 prometheus[15502]: ts=2022-12-20T09:17:43.190Z caller=manager.go:941 level=info component="rule manager" msg="Starting rule manager..."
Hint: Some lines were ellipsized, use -l to show in full.

三、安装配置grafana面板

1、下载二进制对应系统的安装包安装

根据所用系统去选择下载命令:grafana官网下载
在这里插入图片描述
下载好后上传至服务器

2、解压缩并改名

tar -zxvf grafana-enterprise-9.3.2.linux-amd64.tar.gz -C /home/server
mv grafana-enterprise-9.3.2.linux-amd64 grafana
#或者用yum安装
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.2-1.x86_64.rpm
sudo yum install grafana-enterprise-9.3.2-1.x86_64.rpm

##添加到系统服务并启动
/sbin/chkconfig --add grafana_server
service grafana_server start
##访问地址:http://IP:3000
默认账户密码:admin/admin

grafana看板模板网站:grafana模板网站
在这里插入图片描述

<think>嗯,用户想要在Linux上部署Prometheus、JMX Exporter和Grafana的详细教程和博客推荐。首先,我需要回顾一下这些工具各自的作用以及它们如何协同工作。Prometheus是一个监控系统,负责采集和存储指标数据;JMX Exporter用于暴露JVM应用的监控指标,尤其是通过JMX;Grafana则是数据可视化工具,用来展示监控数据。 用户提到的是部署教程,所以应该分步骤讲解每个组件的安装和配置。首先,可能需要从JMX Exporter的下载和配置开始。根据引用内容,用户需要下载jmx_exporter的jar包,并且配置相应的配置文件,比如kafka.yml或者zookeeper.yml这样的示配置。这里要注意的是,引用[1]提到官方不推荐独立进程方式,推荐在应用进程内启动,所以需要指导用户如何将JMX Exporter作为Java Agent运行。 接下来是Prometheus的配置,引用[4]中的job配置示,需要修改prometheus.yml,添加jmx_exporter的targets,比如具体的IP和端口。用户需要确保Prometheus能够正确抓取这些目标的数据。 然后是Grafana的配置,需要导入现有的dashboard,可能引用中提到的jmx_exporter dashboard,比如4701或者8563这样的模板ID。这部分需要指导用户如何在Grafana中添加数据源,并导入仪表盘。 用户还询问了最佳实践和博客推荐,所以需要提供可靠的资源链接,比如Prometheus和JMX Exporter的官方文档,以及一些社区推荐的博客。引用中的github链接[^2]和[^3]可以作为示配置的参考,可以推荐用户查看这些资源。 可能还需要考虑常见问题,比如端口冲突、配置文件语法错误,或者Prometheus无法抓取数据的情况。这时候需要给出排查步骤,比如检查端口是否开放,配置文件是否正确,以及Prometheus的日志信息。 另外,用户可能对如何监控不同的Java应用感兴趣,比如Kafka或Zookeeper,这时候需要说明如何针对不同的应用调整JMX Exporter的配置,并设置对应的标签,如引用[4]中的java_app标签。 最后,确保整个流程的连贯性,从下载配置到启动服务,再到数据可视化的每一步都清晰明了,避免用户遗漏关键步骤。同时,强调最佳实践,比如避免独立进程,使用进程内agent,以及定期更新配置和监控项。</think>### 一、部署流程详解 #### 1. JMX Exporter配置 **核心作用**:通过Java Agent模式暴露JVM指标(官方推荐方式[^1])。 **步骤**: 1. 下载`jmx_prometheus_javaagent-0.18.0.jar`至`/opt/jmx_exporter`目录 2. 创建配置文件`config.yml`(示参考[GitHub示库]) ```yaml rules: - pattern: ".*" ``` 3. 启动Java应用时添加参数: ```bash java -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.18.0.jar=9100:/opt/jmx_exporter/config.yml -jar your_app.jar ``` #### 2. Prometheus集成 **关键配置**:在`prometheus.yml`中添加抓取目标[^4] ```yaml scrape_configs: - job_name: 'jmx_monitor' static_configs: - targets: ['192.168.1.100:9100'] # JMX Exporter暴露端口 metrics_path: /metrics scheme: http ``` #### 3. Grafana可视化 **最佳实践**: 1. 添加Prometheus数据源(地址:`http://prometheus-server:9090`) 2. 导入官方仪表盘模板: - JVM监控模板ID:`8563` - Kafka专用模板ID:`18215` 3. 配置告警规则(如堆内存>80%触发预警) ### 二、优质资源推荐 1. **官方文档** - [JMX Exporter GitHub] - [Prometheus监控JVM指南](https://prometheus.io/docs/guides/jmx/) 2. **中文教程** - [《Java应用监控全链路实践》](https://cloud.tencent.com/developer/article/1836210) - [《Kafka+JMX Exporter监控实战》](https://blog.youkuaiyun.com/weixin_42578481/article/details/129611876) 3. **视频教程** - B站:[Prometheus全栈监控实战](https://www.bilibili.com/video/BV1Y4411L7uH) ### 三、常见问题解决 | 问题现象 | 排查步骤 | |---------|---------| | Prometheus无法获取数据 | 1. 检查防火墙规则<br>2. 验证`curl http://IP:PORT/metrics`是否返回数据 | | Grafana图表无数据显示 | 1. 检查数据源连通性<br>2. 确认时间范围设置正确 | | JVM指标不全 | 1. 检查JMX Exporter配置文件规则<br>2. 确认Java版本兼容性 | ### 四、进阶优化建议 1. **安全加固**: - 通过Nginx反向代理添加Basic认证 - 配置TLS加密传输(参考`jmx_exporter_httpserver`模式) 2. **高可用部署**: - Prometheus集群联邦架构 - Grafana配置多个数据源实现灾备
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值