系统:Ubuntu
(推荐)
安装LAMP:(PHP >= 5.5.9)
apt-get install lamp-server^
apt-get install php5-curl(Ubuntu 16.04是php-curl)
开启apache rewrite
模块
a2enmod rewrite
编辑/etc/apache2/apache2.conf
,找到
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>
将AllowOverride None
改成AllowOverride all
创建数据库: 略……
cd /var/www
git clone https://github.com/cszhi/ops-alert.git
编辑/etc/apache2/sites-available/000-default.conf
,将DocumentRoot /var/www/html
改成DocumentRoot /var/www/ops-alert/public
重启apache
service apache2 restart
……
DB_HOST=127.0.0.1 #数据库ip
DB_DATABASE=homestead #数据库名称
DB_USERNAME=homestead #用户名
DB_PASSWORD=secret #数据库密码
……
其它配置保持默认
cd /var/www/ops-alert
chmod 777 storage/ bootstrap/cache/ .env -R
php artisan key:generate
php artisan migrate
php artisan db:seed
php artisan queue:listen
执行这个命令后,它将会持续运行直到被手动停止为止。
另外可以使用Supervisor
进程监控软件,来确保队列侦听器不会停止运行。
Ubuntu
下安装Supervisor
apt-get install supervisor
创建并编辑文件/etc/supervisor/conf.d/laravel-worker.conf
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/ops-alert/artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=root
numprocs=3
redirect_stderr=true
stdout_logfile=/var/www/ops-alert/storage/worker.log
/var/www/ops-alert
是项目所在目录。
numprocs=3
指运行并监控3
个queue:work
进程。
如果修改了
管理-配置
中的任何配置信息,最好重新加载下Supervisor
:supervisorctl reload
启动Supervisor
service supervisor restart
supervisorctl reread
supervisorctl update
supervisorctl start laravel-worker:*
帐号:admin 密码:Admin123@
略……
- 注册微信企业号
- 进入
通讯录
新增成员。其中帐号
就是等会新增成员要用到的微信号
。 corpid
和corpsecret
:进入设置
-权限管理
-管理员
,就可以看到CorpID
和Secret
。agentid
:进入应用中心
,新建消息型应用
,创建完后,进入应用,其中应用ID
就是agentid
。- 在
设置
中,有企业号的二维码,在通讯录中成员扫描该二维码就可以关注该企业号。
微信号
就是在微信企业号中,新增成员时填写的帐号
- 可选三种报警方式,
微信
、邮件
和微信+邮件
- 每一个分组对应一个唯一的
TOKEN
,用来调用报警api时识别分组
http://ip:port/api/$token
如:http://1.2.3.4:8000/api/qdm4DQYnhz7Z387W
get方式:curl 'http://ip:port/api/$token?hostname=$hostname&ip=$ip&content=$content'
post方式:curl 'http://ip:port/api/$token' -d hostname=$hostname -d ip=$ip -d content=$content
* hostname: 服务器名称
* ip: 服务器ip地址
* content: 报警内容
脚本检测系统负载,负载高于设定的阈值则调用api报警
#!/bin/bash
# Program:
# check system load
# History:
# 2017/03/03 caishunzhi First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
DIR=$(cd "$(dirname "$0")"; pwd)
CURL="curl -s --connect-timeout 30"
TOKEN="qdm4DQYnhz7Z387W"
IP="192.168.0.100"
API="http://$IP:8000/alert/$TOKEN"
HOSTNAME=$(hostname)
LOAD_LIMIT=1
>$DIR/content.txt
#系统当前负载高于设定的阈值,将系统负载信息写入content.txt
load(){
LOAD=$(awk '{print $1}' /proc/loadavg)
LOADAVG=$(awk '{print $1,$2,$3}' /proc/loadavg)
TMP=`awk -v num1=$LOAD -v num2=$LOAD_LIMIT 'BEGIN{print(num1>num2)?"1":"0"}'`
if [ $TMP -eq 1 ];then
echo "LOAD:$LOADAVG" >$DIR/content.txt
fi
}
alert(){
$CURL $API -d hostname="$1" -d ip="$2" -d content="$3"
}
load
#content.txt文件如果不为空时,调用alert函数发送报警
[ -s $DIR/content.txt ] && alert $HOSTNAME $IP "$(cat $DIR/content.txt)"
确保邮件配置中相关配置正确。
检查storage/worker.log
日志,如果有如下报错:
[Symfony\Component\Debug\Exception\FatalErrorException]
Call to undefined function App\curl_init()
说明没有安装php-curl
扩展,需要安装下。
确保微信配置中相关配置正确。
检查storage/worker.log
日志,根据具体报错信息排查。
===============================
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable, creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as authentication, routing, sessions, queueing, and caching.
Laravel is accessible, yet powerful, providing powerful tools needed for large, robust applications. A superb inversion of control container, expressive migration system, and tightly integrated unit testing support give you the tools you need to build any application with which you are tasked.
Documentation for the framework can be found on the Laravel website.
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the Laravel documentation.
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell at taylor@laravel.com. All security vulnerabilities will be promptly addressed.
The Laravel framework is open-sourced software licensed under the MIT license