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

相关推荐
一只叫煤球的猫18 分钟前
真实事故复盘:Redis分布式锁居然失效了?公司十年老程序员踩的坑
java·redis·后端
大鸡腿同学1 小时前
身弱武修法:玄之又玄,奇妙之门
后端
轻语呢喃3 小时前
JavaScript :字符串模板——优雅编程的基石
前端·javascript·后端
MikeWe3 小时前
Paddle张量操作全解析:从基础创建到高级应用
后端
岫珩3 小时前
Ubuntu系统关闭防火墙的正确方式
后端
心之语歌3 小时前
Java高效压缩技巧:ZipOutputStream详解
java·后端
不死的精灵4 小时前
【Java21】在spring boot中使用ScopedValue
java·spring boot·后端
M1A15 小时前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
后端·网络协议·tcp/ip
逸风尊者5 小时前
开发易掌握的知识:GeoHash查找附近空闲车辆
java·后端
程序猿阿越6 小时前
Kafka源码(一)Controller选举与创建Topic
java·后端·源码