Centos安装Prometheus、Grafana监控Kafka及Linux主机

安装并运行 node_exporter

  1. 下载 node_exporter
  2. 解压到指定 /app/exporter
  3. 编写启动脚本 start.sh,并给予权限 chmod + x start.sh,脚本内容如下:
bash 复制代码
#!/bin/bash                                                                                     
nohup /app/exporter/node_exporter-1.6.1.linux-amd64/node_exporter > node_exporter.log &
  1. 执行命令 ./start.sh 启动 node_exporter.

验证 node_exporter 是否启动成功:

  1. 查看同级目录下的 node_exporter.log 日志
  2. 浏览器访问 host:9100,是否看到下面的页面

安装并运行 kafka_exporter

  1. 下载 node_exporter
  2. 解压到指定 /app/exporter
  3. 编写启动脚本 start.sh,并给予权限 chmod + x start.sh,脚本内容如下:
bash 复制代码
#!/bin/bash                                                                                     
nohup /app/exporter/kafka_exporter-1.7.0.linux-amd64/kafka_exporter --kafka.server=two:9092 --kafka.server=three:9092 --kafka.server=four:9092 > kafka_exporter.log &

其中 --kafka.server=two:9092 --kafka.server=three:9092 --kafka.server=four:9092 的作用是指定 Kafka 的集群地址(注意:一定要写上所有的节点地址)

  1. 执行命令 ./start.sh 启动 kafka_exporter.

验证 kafka_exporter 是否启动成功:

  1. 查看同级目录下的 kafka_exporter.log 日志
  2. 浏览器访问 host:9308,是否看到下面的页面

安装并运行 Prometheus

  1. 下载 Prometheus
  2. 解压到 /app/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'.

    static_configs:
      - targets: ["localhost:9090"]
  
  # 新增部分: node_exporter 本机服务器监控
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

  # 新增部分: kafka_exporter kafka集群监控 
  - job_name: 'kafka'
    static_configs:
      - targets: ['localhost:9308']
  1. 编写启动脚本 start.sh,并给予执行权限 chmod +x start.sh,脚本内容如下:
shell 复制代码
#!/bin/bash 
nohup /app/prometheus/prometheus-2.48.0-rc.2.linux-amd64/prometheus --config.file=prometheus.yml > prometheus.log & 

验证 prometheus 是否启动成功:

  1. tail -fn 1000 prometheus.log。
  2. 浏览器打开 http://host:9090,是否可以看到 prometheus 的 web ui.

验证 node_exporter 配置和 kafka_exporter 监控配置是否生效: 主页分别执行以下命令,看是否有数据。

  1. rate(node_cpu_seconds_total{mode="system"}[1m]),验证 node_exporter 是否正常。
  2. kafka_topic_partitions,验证 kafka_exporter 是否正常。

有数据就正常

安装运行并配置 grafana

这里我采用了 docker 安装,简单快速,后面可能会补充二进制的安装方式

第一步:确保安装有 docker

查看 docker 版本

复制代码
docker -v

第二步:拉取镜像

镜像有哪些版本,可以通过查看一个 docker 镜像有哪些版本查看

shell 复制代码
# 你也可以直接拉docker pull grafana/grafana, 即拉取最新的镜像docker pull grafana/grafana:lastest
docker pull grafana/grafana:9.3.2

第三步:准备相关挂载目录及文件

准备目录

bash 复制代码
# /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

准备配置文件

bash 复制代码
# 先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana:9.3.2
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/grafana/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp

# 修改配置文件(需要的话)
# vim /opt/grafana/config/grafana.ini

第四步:启动容器

bash 复制代码
# 启动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 \
    -net=host \
    --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/grafana:9.3.2

如果容器没有起来,报错下载插件失败的话,-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \ 这行可以先删除掉,后面手动下载插件解压放到/opt/grafana/plugins/中。

第五步:访问测试

访问{ip}:3000即可,使用账密 admin/admin 进行登录即可

第六步:使用测试

  1. 添加数据源

    选择普罗米修斯作为数据源

  2. 导入 node 仪表盘

输入:12633,点击右边的Load。

选择 prometheus,然后 Import。

最后,顺便点一下其他地方,选择保存面板。

  1. 导入 kafka 仪表盘

和导入 node 一样的操作,只不过导入的 ID 变为了 7589。

其他步骤省略,看最终成果。

安装运行 alertmanager

暂时不需要,补一个链接,这里有docker安装prometheus、Grafana、node_export、alertmanager。

相关推荐
金銀銅鐵7 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
念何架构之路8 小时前
go-grpc设计思想
开发语言·后端·golang
system_error_x8 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
步行cgn10 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
码事漫谈11 小时前
AI 读你的提示词,其实很没耐心
后端
用户83562907805111 小时前
如何使用 Python 格式化 Excel 单元格中的长文本
后端·python
我命由我1234512 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
IT_陈寒12 小时前
Java性能优化完全指南
前端·人工智能·后端
电子IT笔记12 小时前
对接群晖NAS,上传和删除踩坑记录
前端·后端
Mk5987812 小时前
P4:把 Agent 的记忆搬进 Redis —— AgentScope-Java 工程化实战
后端