@zabbix监控网站黑链接监控及数据推送

news/2024/10/12 16:12:57/

zabbix_0">zabbix监控网站黑链接及数据推送

文章目录

    • zabbix监控网站黑链接及数据推送
      • 1.检测脚本
        • 1》编写python脚本
        • 2》脚本执行
      • 2.数据推送
        • 1》方案一
        • 2》方案二
      • 3.zabbix web

1.检测脚本

1》编写python脚本

创建脚本check_black_links.py,使用python脚本实现网站黑链接检测;

首先,确保你的环境中已经安装了 Python 和 requests 以及 beautifulsoup4 库。没有安装请使用pip安装;

#!/usr/bin/env python3import requests
from bs4 import BeautifulSoup
import sysdef check_links(url):try:response = requests.get(url)response.raise_for_status()except requests.exceptions.RequestException as e:return f"Error accessing {url}: {e}"soup = BeautifulSoup(response.content, 'html.parser')bad_links = []for link in soup.find_all('a', href=True):link_url = link['href']if link_url.startswith('#'):  # Skip internal page referencescontinueif not link_url.startswith(('http://', 'https://')):link_url = requests.compat.urljoin(url, link_url)  # Join relative URLs to base URLtry:link_response = requests.head(link_url, allow_redirects=True)if link_response.status_code != 200:bad_links.append(f'URL: {link_url}, Status Code: {link_response.status_code}')except requests.exceptions.RequestException as e:bad_links.append(f'URL: {link_url}, Error: {e}')if bad_links:return f"Found bad links: {', '.join(bad_links)}"else:return "All links are working properly."if __name__ == "__main__":if len(sys.argv) != 2:print("Usage: check_black_links.py <URL>")sys.exit(1)url = sys.argv[1]result = check_links(url)print(result)
2》脚本执行
#将脚本上传到服务器
格式:执行脚本语言	脚本	检测网站 
python check_black_links.py https://www.cnblogs.com

案例:

# 这里将脚本上传到zabbix的存放脚本目录,检测网站为博客园
python /usr/lib/zabbix/externalscripts/check_black_links.py https://www.cnblogs.com# 输出如下,这里挑选出部分日志粘贴
Found bad links: URL: https://www.cnblogs.com/cmt/p/18341478, Status Code: 400, URL: https://wz.cnblogs.com/, Status Code: 405, URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: https://www.cnblogs.com/cmt/articles/18197617, Status Code: 400, URL: https://wz.cnblogs.com/, Status Code: 405, URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: https://www.cnblogs.com/wzh2010/p/18031157, Status Code: 400, URL: https://www.cnblogs.com/Can-daydayup/p/18457705, Status Code: 400, URL: https://www.cnblogs.com/shanyou/p/18457208, Status Code: 400, URL: https://www.cnblogs.com/cmt/p/18453394, Status Code: 400, URL: https://www.cnblogs.com/cmt/p/18453394, Status Code: 400, URL: https://www.cnblogs.com/Ke-Xin-Jsy/p/18458915, Status Code: 400, URL: https://www.cnblogs.com/Ke-Xin-Jsy/p/18458915#commentform, Status Code: 400, URL: javascript:void(0), Error: No connection adapters were found for 'javascript:void(0)', URL: https://www.cnblogs.com/Ke-Xin-Jsy/p/18458915, Status Code: 400, URL: https://www.cnblogs.com/michaelho/p/18458914, Status Code: 400, URL: https://www.cnblogs.com/michaelho/p/18458914#commentform, Status Code: 400

2.数据推送

1》方案一

通过agent推送,适用于执行时间短的脚本推送

# 编辑agent配置文件“zabbix_agentd.conf”,配置UserParameter推送;(注:适合数据小,执行时间短的脚本,执行时间不得大于15s)vim /etc/zabbix/zabbix_agentd.conf
UserParameter=check.blacklinks[*],/usr/bin/python /usr/lib/zabbix/externalscripts/check_black_links.py $1# 登录zabbix web页面-->选择监控主机-->创建监控项-->选择监控类型为agent-->选择自定义key(check.blacklinks["https://www.cnblogs.com"])-->选择信息类型为文本-->保存监控项-->最新数据检查数据
2》方案二

通过zabbix sender推送,适用于执行时间长的脚本推送

# 编写执行推送脚本,可通过crontab来定期推送数据(注:数据大小不定,执行时间长的脚本,执行时间大于15s可选择此方式)# 登录zabbix web页面-->选择监控主机-->创建监控项-->选择监控类型为trapper-->选择自定义key(zbx.sender)-->选择信息类型为文本-->保存监控项-->最新数据检查数据

创建推送数据脚本zabbix_sender_check_black_links.sh

#!/bin/bash# Zabbix server details
ZABBIX_SERVER="10.11.12.13"
ZABBIX_PORT="10051"
ZABBIX_HOST="Zabbix server test"
ZABBIX_KEY="zbx.sender"# Call the Python script and get the output
BLACK_LINKS_COUNT=$(python /usr/lib/zabbix/externalscripts/check_black_links.py https://www.cnblogs.com)# Use zabbix-sender to send the data to Zabbix server
/usr/bin/zabbix_sender -z "$ZABBIX_SERVER" -p "$ZABBIX_PORT" -s "$ZABBIX_HOST" -k "$ZABBIX_KEY" -o "$BLACK_LINKS_COUNT" >/dev/null

crontab编写,定期执行脚本推送数据

# 登录服务器定期执行脚本
crontab -l
1 * * * * /usr/bin/bash /usr/lib/zabbix/externalscripts/zabbix_sender_check_black_links.sh

zabbix_web_128">3.zabbix web

最新推送检测数据

在这里插入图片描述


http://www.ppmy.cn/news/1537931.html

相关文章

机械设计基本知识,做设计的一定要收藏

掌握扎实的机械设计基础知识&#xff0c;机械工程师能够在面对复杂工程挑战时&#xff0c;展现出卓越的分析能力、创新思维和决策智慧。 以下整理了机械设计基础知识相关知识点&#xff0c;希望对你有帮助。 关于3DSOURCE零件库3DSOURCE零件库由上海新迪数字技术有限公司自主研…

如何不依赖注册中心实现服务的远程调用

​ FeignClient(name "formflowprovider",url "http://ip:port/formflowprovider",configuration FeignConfig.class)​ FeignClient注解的url属性的作用&#xff1a; url 属性&#xff1a;用于指定远程服务的基础 URL 地址。通常情况下&#xff0c;F…

如何判断一个区间之内是否存在某一个区间的和与其他数的关系

碰到过几次了&#xff0c;记一下加深一下印象&#xff1b; https://codeforces.com/contest/1975/problem/C [USACO03MAR] Best Cow Fences G - 洛谷 登录—专业IT笔试面试备考平台_牛客网 这几道题目的核心是如何判断一个区间之内是否存在某一个区间的和与其他数的关系&am…

小体积大功能,5款超实用工具分享!

​ 大家好&#xff0c;我又来啦&#xff0c;今天给大家带来的5款软件&#xff0c;共同特点都是体积小、无广告、超实用&#xff0c;大家观看完可以自行搜索下载哦。 1. 文件传输——Anlink ​ Anlink是一款功能强大的文件传输软件&#xff0c;支持在电脑和安卓设备之间进行快…

效率提高——自动登录校园网(河海大学)与模拟点击与输入获取最新消息

文章目录 零、前言一、自动登录校园网1.1 快速锁定小工具1.2 版本问题1.3 出现进程未结束的情况1.4 关于chromedriver.exe1.5 打包ico图片格式 二、获取信息门户最新消息参考文章 零、前言 最近被校园网弄的也是比较烦心&#xff0c;而且准备远程弄弄这些玩具&#xff0c;为以…

Python知识点:结合Python技术,如何使用Detectron2进行实例分割

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 使用Detectron2进行实例分割的Python技术详解 实例分割是计算机视觉中的一个关键…

【STM32】STM32CubeMX 之 Timers配置 【笔记】

环境 硬件&#xff1a;通用PC 系统&#xff1a; Windows 10 软件 &#xff1a;STM32CubeMX 在STM32CubeMX的Timer配置中&#xff0c;每个选项都有特定的含义。以下是逐一解释这些选项&#xff1a; 1. Mode 配置 a. Clock Source: 时钟源 Internal Clock: 使用内部时钟&…

【Jenkins】如何使用 telegram 的机器人进行 jenkins 任务告警

author: jwensh & gpt date: 2024.10.08 要使用 Telegram 机器人发送 Jenkins 任务告警&#xff0c;步骤可以分为以下几个部分&#xff1a;创建 Telegram 机器人、配置 Jenkins 插件或者使用自定义脚本&#xff0c;将 Jenkins 任务的状态通过 Telegram 机器人通知给你。具体…