首页需要在群里面添加好通知机器人(webhook)类型,申请步骤略

申请后得到一个webhook推送地址:
https://oapi.dingtalk.com/robot/send?access_token=xzfsdafdsafXXXXXXXXXXXX

编辑消息推送脚本(python3:需要安装requests模块:pip install requests):

#!/usr/bin/python3
#coding:utf-8
import requests,json,sys,os,datetime
# 机器人的Webhook地址
#webhook="https://oapi.dingtalk.com/robot/send?access_token=87b9fba6fc1b3b2dc692d22eb74415b2c1018d86099178c6ca58bcf95e799daa"
webhook=sys.argv[4]
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
  "msgtype": "text",
  "text": {
      "content": text
  },
  "at": {
      "atMobiles": [
          # 在web端用户绑定媒介中通过指定用户注册是的手机号,可以通知指定人员,否则只发消息,不艾特具体人
          user
      ],
      "isAtAll": False
      # 设置为1,则@所有人
      # "isAtAll": 1
  }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
  f=open("/var/log/zabbix/dingding.log","a+")
else:
  f=open("/var/log/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
  f.write("\n"+str(datetime.datetime.now())+"   "+str(user)+"   "+"发送成功"+"\n"+str(text))
  f.close()
else:
  f.write("\n"+str(datetime.datetime.now()) + "   " + str(user) + "   " + "发送失败" + "\n" + str(text))
  f.close()

然后将这个文件放到 /usr/lib/zabbix/alertscripts/dingding.py 位置
添加执行权限

chmod +x /usr/lib/zabbix/alertscripts/dingding.py

测试消息是否可以成功发送

/usr/lib/zabbix/alertscripts/dingding.py 13000000000 test message_content https://oapi.dingtalk.com/robot/send?access_token=xzfsdafdsafXXXXXXXXXXXX

注意:能正常发送后,把 /var/log/zabbix/dingding.log 这个日志文件先删除,不然正常添加到zabbix后,由于用户权限导致脚本执行不能修改这个日志文件而发生执行失败的结果

然后就是添加消息媒介了

打开这个页面 /zabbix.php?action=mediatype.list 添加一个消息媒介

名称:Dingtalk
类型:脚本
脚本名称:dingding.py
脚本参数(4个):
1.{ALERT.SENDTO}
2.{ALERT.SUBJECT}
3.{ALERT.MESSAGE}
4.https://oapi.dingtalk.com/robot/send?access_token=xzfsdafdsafXXXXXXXXXXXX
描述:通过钉钉群WEBHOOK机器人向群中发送通知消息

以及添加【消息内容模板】设置

添加好以后可以点【测试】,看是否发送成功

最后,编辑某一个用户,在【用户资料-报警媒介】页面添加 Dingtalk 这个通知方式以及设置报警级别,通知人填写接收人 手机号 达到@指定人

每天凌晨执行,注意:脚本会重载nginx服务

0 0 * * * /bin/bash /root/lnmp1.3/tools/cut_nginx_logs.sh

脚本内容、可修改参数:
log_files_path:日志文件目录
log_files_dir:保存日志文件的目录
log_files_name:日志文件名称,不包含.log
nginx_sbin:nginx 执行文件路径
save_days:保留多少天以内的日志文件

#!/bin/bash
#function:cut nginx log files for lnmp v0.5 and v0.6
#author: http://lnmp.org

#set the path to nginx log files
log_files_path="/home/wwwroot/nginx_logs/"
#log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
log_files_dir=$log_files_path
#set nginx log files you want to cut
log_files_name="www"
#set the path to nginx.
nginx_sbin="/usr/local/nginx/sbin/nginx"
#Set how long you want to save
save_days=365

############################################
#Please do not modify the following script #
############################################
mkdir -p $log_files_dir

log_files_num=${#log_files_name[@]}

#cut nginx log files
for((i=0;i<$log_files_num;i++));do
 mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").log
# mv ${log_files_path}${log_files_name[i]}.log ${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").log
done

#delete 30 days ago nginx log files
find $log_files_path -mtime +$save_days -exec rm -rf {} \; 

$nginx_sbin -s reload


<?php

    /**
     * 将字符串中编码的emoji字符还原
     * @param $text
     * @return string
     */
    function decodeEmoji($text)
    {
        $content = $text;
        if (preg_match_all("/(\[\:[^\]]+\])/", $content, $match)) {
            foreach ($match[1] as $k=>$str) {
                $str2 = '"' . str_replace(['[', ']', ':'], ['', '', '\\'], $str) . '"';
                $content = str_replace($str, json_decode($str2), $content);
            }
            return $content;
        }
        return $text;
    }

    /**
     * 将字符串中的emoji字符编码
     * @param $text
     * @return string
     */
    function encodeEmoji($text)
    {
        $content = '';
        foreach (preg_split("//u", $text, null, PREG_SPLIT_NO_EMPTY) as $v) {
            $content .= strlen($v)==4 ? '['.str_replace(['\\','"'], [':',''], json_encode($v)).']' : $v;
        }
        return $content;
    }

windows中是自带的,不用安装,直接在cmd窗口直接使用
ctrl+r,运行cmd,直接使用

nslookup 命令是 bind-utils 包的一部分
要想安装 nslookup, 直接安装 bind-utils 即可
centos7:

yum install -y bind-utils

如何使用:
nslookup baidu.com

查询指定某个类型的解析
nslookup的语法为(注意qt必须小写)
nslookup –qt=类型 目标域名

类型主要有:
A 地址记录(Ipv4)
AAAA 地址记录(Ipv6)
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录
RP 负责人记录
SRV TCP服务器信息记录
TXT 域名对应的文本信息
如何使用指定DNS服务器查询?

语法为 nslookup -qt=类型 目标域名 指定的DNS服务器IP或域名
如果你要查询www.jsons.cn的A记录,那在命令符提示窗口输入:nslookup -qt=a www.jsons.cn的 则可以查到相应的记录

例子:nslookup -qt=A www.jsons.cn 8.8.8.8

.btn.loading{
    white-space: nowrap;
}
.btn.loading:before {
    content: "";
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABAUlEQVQ4T6WTMUoDURRFz9mEYGcdK8E+7sBKwdImvbiAKFgJgq3prASzCe0VLFSw0kJwBYLdlR/+SAwZxsTfDPx57865d96Tfx7n9ScZAmvqfpJT4FM9nlf7SyDJFvACnAF7qklegTvgEjgERupVIzYrEOBo+mtJCslbkgtgAByo520Cq+pHWyyVsA+sACeldkKQ5Lo81d2uTJM8AuvAhvowN8Q/iGwD9+p7QzBQR12NlbYHPFXiScrloljYVL+6REqoQPkzxbINQU997mpunYNKURQXFvkhqEjLCTRoSfrq7SJWZidx2Dbz1ebO7Pu2ZSo7UTK5qYs1bstnqUGatvgN8r9sEdrr9W0AAAAASUVORK5CYII=);
    background-position: left center;
    background-repeat: no-repeat;
    width: 1em;
    height: 1em;
    display: inline-block;
    margin-right: 3px;
    vertical-align: text-bottom;
    animation: spin 1s infinite linear;
}
@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}