通过一点细微代码的修改,将某系统首页载入时间缩短了10倍有余.
继续阅读“记一次立竿见影的性能优化”
两个简单的linux监控软件
除了zabbix,nagios这样重量型的监控软件之外,挑选了几个简单的linux监控软件,也还比较好用,记录一下
继续阅读“两个简单的linux监控软件”
saltshaker–一个salt的webui
salt的webui,官方的是halite,但已经被放弃了,不维护很久了
尝试过其他几个star比较的开源实现,比如saltpad,但要么就是bug满天飞,要么就是技能栈不符难以二次开发
最后发现了一个开源实现叫saltshaker的不错,最终效果如下
继续阅读“saltshaker–一个salt的webui”
扩展并修改bash源码使支持rsyslog且增加审计条目
最终效果:
log记录:
/var/log/messages
saltstack的安装和基本使用
saltstack可用于批量管理集群,用的是c/s架构,master管理多个minion
测试系统:debian8.7
一.安装master
1.添加apt key
wget -O - https://repo.saltstack.com/apt/debian/8/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
关于supervisor/gosuv等控制django/flask进程的小贴士
在使用supervisor/gosuv等进程控制程序控制django/flask进程时,常常会出现一个"BUG"------输入supervisor restart {app}/gosuv stop/start {app}后,经常会出现django/flask重启失败,因为端口已占用的错误。
这里我们常常想到,先把端口关掉不就可以了?经常在代码中加入如下命令:(如果程序是django或者flask,占用的端口是82端口)
import subprocess import os pid = os.popen("lsof -i:82|grep python|awk '{print $2}'").read() if len(pid): subprocess.check_output("kill -9 "+str(int(pid)), shell=True) #注意,这里一定要用subprocess库来kill进程。用os.system运行kill -9或os.kill()都会导致新进程产生
这样虽然可行,但是比较麻烦。其实占用端口的原因是flask/django服务器自动reload造成的,只需要在supervisor/gosuv的启动指令里,加上--noreload参数就不会产生这个"BUG"了,举例如下:
#原来启动指令 python manage.py runserver 0.0.0.0:82 #更新启动指令 python manage.py runserver 0.0.0.0:82 --noreload
搞定
部署sentry捕获项目错误信息
sentry是一款专用于捕捉项目错误信息的分布式开源软件,可以轻松的捕捉到不同项目的错误信息并汇总,方便实时查看上下文排错以及报警等。
最终效果图如下:
继续阅读“部署sentry捕获项目错误信息”
django使用middleware实现views的访问限制
需要实现这样的需求,对于以个django app,需要对其中的一些restful api做IP访问限制,这样实现起来最方便的是在middleware中写逻辑。
关于django中间件的说明:
http://usyiyi.cn/translate/Django_111/topics/http/middleware.html
http://python.usyiyi.cn/translate/django_182/topics/http/middleware.html
继续阅读“django使用middleware实现views的访问限制”
supervisor集中化管理web工具cesi
linux进程管理器supervisor是会经常被用到的,但服务器多了之后,每个服务器的进程也不方便管理。同时,supervisor自带的web界面比较简陋,所以尝试了一下官网推荐的一些第三方开源软件,推荐一下这个cesi。
最终效果如下:
继续阅读“supervisor集中化管理web工具cesi”
使用zabbix api提取趋势(trend)和历史(history)数据
zabbix restful api说明见官网文档
https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/apiinfo
使用了github上封装好的python zabbix api,免去了自己造轮子的过程
https://github.com/lukecyca/pyzabbix
继续阅读“使用zabbix api提取趋势(trend)和历史(history)数据”