shell脚本监控业务目录【基于Prometheus的pushgateway】

本文介绍了如何通过Prometheus监控业务目录中的文件数量,以防止数据拥堵影响业务系统。首先,搭建Prometheus监控平台和Pushgateway,然后配置监控和告警规则。接着,编写Shell脚本监控指定目录,当文件数超过阈值时,通过Pushgateway推送告警到Web页面。最后,模拟测试验证告警系统的有效性。

背景:生产环境需要数据跨网需求,因数据处理程序不完善,经常会出现数据文件拥堵在业务目录中,导致业务系统的数据更新不及时,给业务系统造成了一定影响。

一,搭建Prometheus监控平台。【此处不再过多介绍,可参考其他文章部署】

二,业务机器安装pushgateway。

tar -zxvf pushgateway-1.4.2.linux-amd64.tar.gz

cd pushgateway-1.4.2.linux-amd64

sh start.sh

netstat -uptln |grep 9091

三,Prometheus server端配置pushgateway,并添加告警配置。

vi prometheus.yml                                   Prometheus配置文件配置

- job_name: "pushgateway"

    honor_labels: true

    static_configs:

      - targets: ["192.168.48.130:9091"]     //此处为被监控端ip+port

          instance: pushgateway

    vi alert_rules.yml               Prometheus告警文件配置

  

- alert: in目录中的文件数,每分钟

    expr: in > 100            #in  目录名,自定义即可,此处为每30s,如果目录内文件大于100即告警

    for: 30s

    labels:

      severity: warning

    annotations:

      summary: "文件拥堵"

      description: "文件拥堵,当前目录拥堵文件数:{{ $value }}"

./promtool check config prometheus.yml         #检查配置Prometheus配置文件格式

执行Prometheus脚本,重启Prometheus server端。sh stop.sh  ;sh start.sh

四,访问被监控端pushgateway web页面

http://192.168.48.130:9091

【备注:文件没有超过告警限制数前pushgateway默认web界面是空的。】

如图:

五,编写shell脚本。用于监控业务目录。

#!/bin/bash

while true

do 

fileName1=`ls -l /data/ |grep "^_" |wc -l`

#统计业务目录data目录下的文件数量

if [ $fileName1 -gt 100 ];then

#判断数量是否大于100,如果大于100,则请求pushgateway地址,将数据发送至web页面。

echo " in $fileName1" |curl  --data-binary @- http://192.168.48.130:9091/metrics/job/test_job

fi

sleep 30s

#30s查询一次

done

#循环结束

给予脚本执行权限

chmod +x test.sh

后台运行脚本

nohup ./text.sh &

六,本地创建101个文件,模拟告警测试。

touch /data/{1..101}

web页面访问查看:192.168.48.130:9091

 可以访问Prometheus server端的web页面,查看对应监控目录的文件数量折线图。

可以访问Prometheus 的告警界面,查看对应目录的告警显示图。

 

 

 

### 使用 Shell 脚本安装 Prometheus 教程 #### 准备工作 为了通过 shell 脚本安装 Prometheus,需先确认服务器环境已配置好必要的工具和依赖项。通常情况下,Linux 发行版自带的包管理器可以满足这些需求。 #### 下载并解压 Prometheus 文件 创建一个新的 shell 脚本来下载最新版本的 Prometheus 并将其解压缩到指定目录: ```bash #!/bin/bash # 定义变量 PROMETHEUS_VERSION="v2.38.0" DOWNLOAD_URL="https://github.com/prometheus/prometheus/releases/download/${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz" INSTALL_DIR="/opt/prometheus" # 创建安装目录 mkdir -p ${INSTALL_DIR} # 进入临时文件夹下载 tarball cd /tmp || exit wget ${DOWNLOAD_URL} -O prometheus.tar.gz # 解压至目标位置 tar xvzf prometheus.tar.gz --strip-components=1 -C "${INSTALL_DIR}" # 清理残留文件 rm prometheus.tar.gz ``` 此部分操作会自动完成 Prometheus 的获取与初步设置[^1]。 #### 配置启动脚本 接着为 Prometheus 设置启动/停止服务的相关命令,在同一脚本中继续添加如下内容来实现自动化控制功能: ```bash # 复制二进制文件到全局路径以便于调用 cp "${INSTALL_DIR}/prometheus" "/usr/local/bin/" chmod +x "/usr/local/bin/prometheus" # 创建软链接方便管理日志和服务状态 ln -sf "${INSTALL_DIR}/console_libraries" "/etc/prometheus/console_libraries" ln -sf "${INSTALL_DIR}/consoles" "/etc/prometheus/consoles" # 启动Prometheus Server端 "${INSTALL_DIR}/start.sh" ``` 上述代码片段展示了如何利用现有的 `start.sh` 来初始化运行 Prometheus 实例。 #### 自定义监控指标收集 (可选) 如果希望进一步增强系统的监测能力,则可以根据实际应用场景编写额外的数据抓取逻辑,并借助 HTTP API 将数据推送回 Prometheus 中存储分析。例如,对于容器内部 TCP 连接数量统计的任务可以通过下面的方式达成: ```bash # 增加自定义监控脚本权限 chmod +x "path/to/push/tcp_monitor.sh" # 执行采集任务并将结果发送给Prometheus Pushgateway或其他接收组件 /path/to/push/tcp_monitor.sh ``` 这里假设存在名为 `push/tcp_monitor.sh` 的外部程序负责处理具体的业务逻辑[^2]。 #### 总结 综上所述,整个过程涵盖了从准备阶段直到最终部署完毕的一系列步骤说明。值得注意的是,具体实施过程中可能还需要针对不同平台做出适当调整以适应特定环境下的差异性要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值