当前位置: 首页 > news >正文

asp.net 制作网站开发公司网站模板设计

asp.net 制作网站开发,公司网站模板设计,太原师范学院教务网络管理系统,设计师个人网站怎么做一,前言 有zabbix监控,也并不是时刻盯着数据,所以想着,每天固定某个时刻,自动发送服务器数据到指定群组,给其他人更直观的数据。 数据就可以从zabbix API获取。参考官方API文档:https://www.z…

一,前言

有zabbix监控,也并不是时刻盯着数据,所以想着,每天固定某个时刻,自动发送服务器数据到指定群组,给其他人更直观的数据。

数据就可以从zabbix API获取。参考官方API文档:https://www.zabbix.com/documentation/current/zh/manual/api

二,功能实现

主要功能概览

  1. 获取cpu和内存的数据(可根据实际情况添加其他监控项数据)。
  2. 只需要24小时内,最大,最小,平均数据。
  3. 只获取群组为prod的主机服务器,意味着生产环境。
    需要获取主机,在zabbix分到同一个组,方便获取所有主机信息。
    在这里插入图片描述

代码步骤概览

  1. 获取 Zabbix 认证 Token(登录有权限的账户)。
    user.login方法,获取Token。需要注意的是,由于安装版本不同,API链接可能不同,如有些是https://example.com/zabbix/api_jsonrpc.php,有些是https://example.com/api_jsonrpc.php
  2. 获取指定群组中的所有主机,获取群组ID。
    hostgroup.get方法,获取群组ID
  3. 获取群组内所有主机,host.get方法。
  4. 遍历每个主机,获取CPU和RAM的监控项,获取需要监控项的itemID,item.get方法。
  5. 通过 监控项的itemID,获取历史数据记录,history.get方法。
  6. 计算将结果通过媒体发送到指定群组(这里为TG群组)。

三,代码实现

这里使用shell脚本

#!/bin/bash# 信息验证
ZABBIX_URL="https://zabbix.example.com/api_jsonrpc.php"
ZABBIX_GROUP="prod"  # 指定的服务器群组名称
ZABBIX_USER="Admin"
ZABBIX_PASS="passoword"# TG 群组token和ID
TELEGRAM_BOT_TOKEN="5487418237:AAGibU......."
TELEGRAM_CHAT_ID="-452112...."# 登录并获取zabbix token
AUTH_TOKEN=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "user.login","params": {"user": "'$ZABBIX_USER'","password": "'$ZABBIX_PASS'"},"id": 1
}' $ZABBIX_URL | jq -r '.result')
#echo $AUTH_TOKEN# Step 1: 获取群组ID
GROUP_ID=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "hostgroup.get","params": {"output": "extend","filter": {"name": ["'$ZABBIX_GROUP'"]}},"auth": "'$AUTH_TOKEN'","id": 1
}' $ZABBIX_URL | jq -r '.result[0].groupid')
#echo $GROUP_ID# Step 2: 获取群组内所有主机
HOSTS=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "host.get","params": {"output": ["hostid", "host"],"groupids": "'$GROUP_ID'"},"auth": "'$AUTH_TOKEN'","id": 1
}' $ZABBIX_URL)
#echo $HOSTS# 时间范围,这里只获取24小时的数据
END_TIME=$(date +%s)
#echo $END_TIME
START_TIME=$((END_TIME - 86400))  # 24小时之前的时间戳
#echo $START_TIME# Step 3: 遍历每个主机,获取CPU和RAM的监控项数据
for HOST in $(echo "$HOSTS" | jq -r '.result[] | @base64'); do_jq() {echo ${HOST} | base64 --decode | jq -r ${1}}HOST_ID=$(_jq '.hostid')#echo $HOST_IDHOST_NAME=$(_jq '.host')#echo $HOST_NAME# Step 4: 获取CPU和内存的itemidITEMID_CPU=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "item.get","params": {"output": "extend","hostids": "'$HOST_ID'","search": {"name": "CPU utilization","key_": "system.cpu.util"}},"auth": "'$AUTH_TOKEN'","id": 1}' $ZABBIX_URL | jq -r '.result[0].itemid')#echo $ITEMID_CPUITEMID_MEM=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "item.get","params": {"output": "extend","hostids": "'$HOST_ID'","search": {"key_": "vm.memory.utilization"}},"auth": "'$AUTH_TOKEN'","id": 1}' $ZABBIX_URL | jq -r '.result[0].itemid')#echo $ITEMID_MEM# 获取CPU和内存的历史数据CPU_DATA=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "history.get","params": {"output": "extend","history": 0,"itemids": "'$ITEMID_CPU'","time_from": "'$START_TIME'","time_till": "'$END_TIME'","sortfield": "clock","sortorder": "DESC"},"auth": "'$AUTH_TOKEN'","id": 1}' $ZABBIX_URL | jq -r '.result[] | .value')MEM_DATA=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "history.get","params": {"output": "extend","history": 0,"itemids": "'$ITEMID_MEM'","time_from": "'$START_TIME'","time_till": "'$END_TIME'","sortfield": "clock","sortorder": "DESC"},"auth": "'$AUTH_TOKEN'","id": 1}' $ZABBIX_URL | jq -r '.result[] | .value')#获取最新的CPU和内存数值LATEST_CPU=$(echo "$CPU_DATA" | head -n 1)LATEST_MEM=$(echo "$MEM_DATA" | head -n 1)#计算CPU和内存的最大值、最小值和平均值CPU_MAX=$(echo "$CPU_DATA" | sort -nr | head -n 1)CPU_MIN=$(echo "$CPU_DATA" | sort -n | head -n 1)CPU_AVG=$(echo "$CPU_DATA" | awk '{s+=$1} END {printf "%.2f", s/NR}')#echo $CPU_MAX#echo $CPU_MIN#echo $CPU_AVGMEM_MAX=$(echo "$MEM_DATA" | sort -nr | head -n 1)MEM_MIN=$(echo "$MEM_DATA" | sort -n | head -n 1)MEM_AVG=$(echo "$MEM_DATA" | awk '{s+=$1} END {printf "%.2f", s/NR}')#echo "$MEM_AVG"#格式化为两位小数CPU_MAX=$(printf "%.2f" "$CPU_MAX")CPU_MIN=$(printf "%.2f" "$CPU_MIN")LATEST_CPU=$(printf "%.2f" "$LATEST_CPU")MEM_MAX=$(printf "%.2f" "$MEM_MAX")MEM_MIN=$(printf "%.2f" "$MEM_MIN")LATEST_MEM=$(printf "%.2f" "$LATEST_MEM")#发送监控数据到 TG 群组MESSAGE="*Server Name(服务器):* $HOST_NAME%0A*CPU utilization 24h(利用率):*%0A- Max(最大): $CPU_MAX%25%0A- Min(最小): $CPU_MIN%25%0A- AVG(平均): $CPU_AVG%25%0A- Current(当前): $LATEST_CPU%25%0A*Memory utilization 24h(内存利用率):*%0A- Max(最大): $MEM_MAX%25%0A- Min(最小): $MEM_MIN%25%0A- AVG(平均): $MEM_AVG%25%0A- Current(当前): $LATEST_MEM%25%"#echo $Messagecurl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \-d "chat_id=$TELEGRAM_CHAT_ID" \-d "text=$MESSAGE" \-d "parse_mode=Markdown"done

以上代码,在调试,可以自行去掉 echo 前面的#。

四,群组输出格式问题

最后代码格式问题,会因所发送的媒体信息不通,代码格式也不同。如以前用/n换行,格式在shell输出没问题,在TG群就不生效。以前参考格式。

    MESSAGE="服务器名称: $HOST_NAME\nCPU 利用率: 最大 $CPU_MAX%, 最小 $CPU_MIN%, 平均 $CPU_AVG%\n内存利用率: 最大 $MEM_MAX%, 最小 $MEM_MIN%, 平均 $MEM_AVG%"curl -s -X POST https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage -d chat_id=$TELEGRAM_CHAT_ID -d text="$MESSAGE"

后面改成这样的格式,虽然shell输出格式乱,但是在TG群组输入没问题。

使用Markdown 语法:

使用 * 符号来加粗文本。
使用 - 来列出项目。
确保 TG 处理换行:

将换行符 \n 替换为 %0A,这是 URL 编码的换行符。

    MESSAGE="*Server Name(服务器):* $HOST_NAME%0A*CPU utilization 24h(利用率):*%0A- Max(最大): $CPU_MAX%25%0A- Min(最小): $CPU_MIN%25%0A- AVG(平均): $CPU_AVG%25%0A- Current(当前): $LATEST_CPU%25%0A*Memory utilization 24h(内存利用率):*%0A- Max(最大): $MEM_MAX%25%0A- Min(最小): $MEM_MIN%25%0A- AVG(平均): $MEM_AVG%25%0A- Current(当前): $LATEST_MEM%25%"curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \-d "chat_id=$TELEGRAM_CHAT_ID" \-d "text=$MESSAGE" \-d "parse_mode=Markdown"

最后运行脚本结果
在这里插入图片描述
最后放服务器上,设置个定时任务,每天自动发送消息。

crontab -e00 12 * * * bash /shell/zabbix_monitor.sh
http://www.wangmingla.cn/news/47376.html

相关文章:

  • 定制开发电商网站建设公司廊坊关键词排名首页
  • 最好的建站平台seo实战视频
  • 广州知名网站建设网页设计服务网站优化技巧
  • 大规模网站开发语言网页制作流程
  • 西安手机网站建站磁力猫引擎入口
  • 个人可以做聊天网站备案吗百度推广费用一年多少钱
  • 可以建设彩票网站吗数据指数
  • 做自己的网站收费吗齐三seo顾问
  • 免费建站网站一级大陆在线看东莞排名优化团队
  • 昆明网站运营处理事件seo软件
  • wordpress更换主题 会有什么营销网站seo优化培训
  • 安阳市哪里做网站建设什么是网络营销推广
  • 河南省住房和城乡建设厅查询网站产品50个关键词
  • 百度做一个网站多少钱网络平台有哪些?
  • 开发一个b2c网站所需要长春网站优化页面
  • 网站前端切图做多个页面网址大全浏览器主页
  • 建站宝盒做的网站百度seo最成功的优化
  • 闸北做网站公司互联网广告代理加盟
  • 社区门户网站建设招标公告线上营销推广
  • 一个主做海贼王的网站app排名优化公司
  • 男女做羞羞的事视频网站seo技术优化整站
  • 潍坊网站建设潍坊苏州网站建设书生商友
  • 做网站有哪些技术手机网站制作教程
  • 温州企业网站seo优化便宜
  • 网站建设公司 武汉网上如何做广告
  • 幼儿园微网站建设栏目360推广登录平台
  • 兰州商城网站建设廊坊seo关键词排名
  • win2003 iis配置网站连云港seo优化
  • 网站seo视频软文推广案例
  • 建网站代理哪个网站友情链接检测