1 Star 0 Fork 4

root / pl-log-notic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

pl-log-notic

这是一个通过读取 Elasticsearch 中收集的错误日志,发送消息到企业微信来实现生产系统错误提醒的预警系统。下面介绍如何安装部署。

安装构建静态文件所需的模块,以及构建静态文件

安装构建所需的模块

cd webpage
npm install

注:速度慢可以更换淘宝的源

cd webpage
npm config set registry https://registry.npm.taobao.org
npm install

然后构建页面

npm run build

构建出来的静态文件位于webpage/public/目录下,手动拷贝它们到pladmin/pltplconf/templates/pltplconf/,然后把index.html进行模板标签替换,最后把静态文件移动到pladmin/pltplconf/static

使用Makefile构建

你可能想使用Makefile,因为这样就不需要每次执行构建、手动拷贝再替换标签了:

make clean && make

服务环境部署

安装依赖

注:pl-log-notic是在Python 3.8环境下开发的。

pip install -r requirements.txt

如果安装缓慢可以尝试换个镜像,比如

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

关于依赖项和安装的包的位置相关问题

特殊情况下,可能需要把包安装在特定的位置,这时通过指定--target选项来实现,例如指定当前目录下的package目录:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --target=package

也可以相对路径或者绝对路径:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --target=./my_package
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --target=/tmp/my_package

启动python命令时就需要指定一个环境变量,PYTHONPATH,如:

PYTHONPATH=package python

这时模块路径就能包含当前目录的package目录:

$ PYTHONPATH=package python
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/az13js/pl-log-notic/package', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/az13js/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']

初始化数据库的表

cd pladmin
python3 manage.py migrate

默认情况下使用的是sqlite3本地数据库,数据库文件位于pladmin/db.sqlite3

使用MySQL?

如果使用MySQL需要进行一些调整。

一,调整配置文件,默认配置文件位于pladmin/pladmin/settings.py,除非自定义修改了配置文件路径。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
        'NAME': 'test_001', # 数据库名
        'USER': 'root', # 账号
        'PASSWORD': 'PASSWORD', # 密码
        'HOST': '127.0.0.1', # HOST
        'POST': 3306, # 端口
        'CONN_MAX_AGE': 60 # 数据库连接维持时间
    }
}

二,修改代码,在pladmin/pltplconf/__init__.py,导入plmysql并设置:

import pymysql
pymysql.install_as_MySQLdb()

启动定时任务

cd pladmin
python3 manage.py scheduler

注:这命令不会自己转后台,最好配置supervisor去监控。如果使用sqlite3的话可能出现数据库锁定导致操作错误,这种情况它会自己尝试继续运行,并发低的时候问题不大。

运行服务器

cd pladmin
python3 manage.py runserver 9210

注:9210是 web 服务的监听端口号,可以自定义这个端口号,应用不依赖特定端口。

查看页面

浏览器访问http://127.0.0.1:9210/

创建超级用户

服务器端使用的是Django框架,如果你打算使用框架内置的后台,那你可能想创建超级用户。

cd pladmin
python3 manage.py createsuperuser

按照提示填写用户信息和密码就行了。

启动ES数据导出的节点

这个系统支持根据自定义的规则从ES中按照时间段导出全部数据。原理是采用Worker节点从Web服务中查询出导出的任务,领取后在节点上执行数据导出的工作。Worker可以运行多个,通过不同的Worker名称来区分。启动Worker需要按照下面的方式通过环境变量配置:

  • WORKER_NAME节点名,必填,保证每个进程有不同的节点名
  • HOST通过HTTP访问时的主机名称,只通过IP就能访问的话可以随便写,此参数是必填的
  • IPWEB服务的IP地址,如果IP地址是可以动态改变的话,那么可以不设置此参数
  • PORTWEB服务端口,默认80,可以不填写
  • CACHETIME游标缓存时间,默认是1分钟,1m
  • USERHTTP基础认证,用户名,可选
  • PASSWORDHTTP基础认证,密码,可选

示例:

$ cd pladmin
$ WORKER_NAME=local-worker-01 HOST=pl-log-notic.az13js.cn IP=127.0.0.1 PORT=9210 CACHETIME=1m python3 manage.py export_worker

该命令需要使用一些手段防止因为程序异常退出。在单机模式下,导出的文件会保存到pladmin/pltplconf/static文件夹,可以在页面上下载。在以多个Worker作为集群部署的时候,如果部署在不同的服务器上那么可能无法下载到导出的文件。这种情况下请参考pladmin/export_floder_process_script.py脚本编写一个上传到专门的文件服务的命令,然后修改配置文件里面的EXPORT_FLODER_PROCESS_COMMAND参数。Worker进程会在导出ES数据完成的时候,将数据所在的文件夹作为第一个参数传给EXPORT_FLODER_PROCESS_COMMAND配置的命令,然后把命令输出的内容作为下载的链接通过Web服务保存起来,然后在页面被用户看到。

作为集群部署

无论Web服务、scheduler服务或者导出节点,都可以支持以集群的方式分开部署在个服务器上。因为默认的配置是针对单机部署的,所以需要按照下面的方式调整一些配置:

  1. 导出节点集群部署需要参考pladmin/export_floder_process_script.py脚本编写一个上传到专门的文件服务的命令,然后修改配置文件里面的EXPORT_FLODER_PROCESS_COMMAND参数)
  2. scheduler服务集群部署需要Redis服务,然后修改配置文件中的REDIS_SETTING
  3. Web服务集群部署需要单独部署数据库,参考上面的MySQL配置说明
The MIT License (MIT) Copyright © 2020 az13js Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

定时触发消息通知,github地址https://github.com/az13js/pl-log-notic,支持Elasticsearch、企业微信机器人,是一个日志监控,报警系统 展开 收起
Python
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/wjbjwang/pl-log-notic.git
git@gitee.com:wjbjwang/pl-log-notic.git
wjbjwang
pl-log-notic
pl-log-notic
master

搜索帮助

14c37bed 8189591 565d56ea 8189591