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

相关推荐
林太白2 小时前
❤Node09-用户信息token认证
数据库·后端·mysql·node.js
骆晨学长3 小时前
基于Springboot的助学金管理系统设计与实现
java·spring boot·后端
蒙娜丽宁3 小时前
深入理解Go语言中的接口定义与使用
开发语言·后端·golang·go
AskHarries4 小时前
java使用ByteBuffer进行多文件合并和拆分
java·后端
不染_是非4 小时前
Django学习实战篇六(适合略有基础的新手小白学习)(从0开发项目)
后端·python·学习·django
代码对我眨眼睛4 小时前
springboot从分层到解耦
spring boot·后端
The Straggling Crow5 小时前
go 战略
开发语言·后端·golang
ai安歌5 小时前
【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目
java·开发语言·后端·tomcat·web·intellij idea
尘浮生5 小时前
Java项目实战II基于Java+Spring Boot+MySQL的作业管理系统设计与实现(源码+数据库+文档)
java·开发语言·数据库·spring boot·后端·mysql·spring
程序员阿鹏6 小时前
ArrayList 与 LinkedList 的区别?
java·开发语言·后端·eclipse·intellij-idea