分类 默认分类 下的文章

rpm -qa | grep php
php-7.3.25-1.el6.remi.x86_64


rpm -ql php-7.3.25-1.el6.remi.x86_64
/etc/httpd/conf.d/php.conf
/usr/lib64/httpd/modules/libphp7-zts.so
/usr/lib64/httpd/modules/libphp7.so
/var/lib/php/opcache
/var/lib/php/session
/var/lib/php/wsdlcache
/var/www/icons/php.gif

# epel
yum install epel-release
# remi
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

## 安装PHP 7.3
$ yum --enablerepo=remi-php73 install php

yum --enablerepo=remi-php73 install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap

yum --enablerepo=remi-php73 install php-redis php-fpm

[root@node1 ~]# php -v
PHP 7.3.25 (cli) (built: Nov 24 2020 14:31:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.25, Copyright (c) 1998-2018 Zend Technologies

[root@node1 ~]# php -m

安装后 php-fpm -t 发现报错:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: php_json_decode_ex in Unknown on line 0

这是因为redis和curl扩展加载顺序冲突导致的

解决方法:

不要在/etc/php.ini里加入extension=redis.so这行,可在php.d文件夹下创建新文件redis.ini,在redis.ini里加入extension=redis.so这行.
重启php
php -m 发现redis扩展加载上了

这个/etc/php.ini发现不是这次安装的时候创建的,之前已经有这个文件了(可能之前有人弄过)

首页需要在群里面添加好通知机器人(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