运维平台架构设计及开发(持续更新中...)

开发环境: Python 2.x GoLang 1.6 Django 1.6 Bootstrap 3.0 JQuery1.8 架构: 模块介绍: Agent:使用GoLang开发,主要收集主机信息、执行下发任务、主机状态上报、服务检测等 Master:使用GoLang开发,接收Agent上报的信息,存储到MySQL Dashboard:使用Python Django开发,前台展示及管理。前端使用B......
Python 2019年01月26日 17:15:58

shell生成指定范围随机数与随机字符串

使用系统的 $RANDOM 变量 [root@dev01 ~]# echo $RANDOM 17146 [root@dev01 ~]# echo $RANDOM 24329 $RANDOM 的范围是 [0, 32767] 如果需要生成超过32767的随机数,可以用以下方法实现。 生成400000~500000的随机数 #!/bin/bash function rand(){ min=$1 max=......
Linux命令 2019年04月28日 18:21:12

Python 反射

什么是反射? 通过类名获得类的实例对象 通过方法名得到方法,实现调用 通过字符串映射object对象的方法或者属性 反射方法 vim a.py class A: def __init__(self): self.name = zk def getName(self): return self.name 反射方法一: from a import A obj = globals()[ A ]() pr......
Python 2019年04月28日 16:43:21

Python 类组合和聚合

聚合(aggregation): 是整体与部分的关系。 通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。 #! /usr/bin/env python # -*- coding:utf8 -*- 聚合关系 class A(object): def __init__(se......
Python 2019年04月28日 16:15:47

Python 通过字符串调用函数

eval() def func(): print func name eval( func )() # func name eval() 函数通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。eval() 功能强大但是比较危险(eval is evil),不建议使用。 locals()和globals() def func(): print func name gl......
Python 2019年04月28日 15:56:04

Python Queue模块

Queue.Queue类是一个队列的同步实现。 队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。 import Queue queue = Queue.Queue(maxsize = 10) # 创建队列 将一个值放入队列中 queue.put(20) 调用队列对象的put()方法在队尾插入一个项目。 put(......
Python 2019年04月28日 15:33:43

Python 内置函数 filter、map、reduce、lambda使用

filter(function, sequence) lst = [ 1 , 2 , 3 , 4 ] def func(x): return x if x != 1 else None ret = filter(func, lst) print ret # [ 2 , 3 , 4 ] 对sequence中的item依次执行function(item),将执行结果为True的item组成一个List......
Python 2019年04月28日 15:19:03

MySQL配置wait_timeout浅析

在缺省情况下,wait_timeout的初始值是28800。 wait_timeout的值过大有弊端,其体现就是MySQL里有大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个值设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题,通常来说,个人觉得把wait_timeout设置为10是个不错的选择,但某些情况下可能也会出问题,比如说有一个CRON脚本,......
MySQL 2019年04月28日 14:50:27

Go实现类telnet客户端连接获取信息

最近在写服务的监控,因项目比较老最早的开发人员早已不在,想获取服务的同时在线人数,通过telnet命令是可以获取,今天想用Go实现类telnet命令的获取方式。 package main import ( net os fmt io strings strconv ) var ( hostPost string = 127.0.0.1:1900 ) func main() { conn, err ......
GoLang 2019年04月19日 16:38:14

如何杀掉Linux系统中的僵尸<defunct>进程

在Linux系统中,用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为defunct,这就是所谓的“僵尸”进程。“僵尸”进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。由于进程表的容量是有限的,所以,defunct进程不仅占用系统的内存资源,影响系统的性能,而且如果其数目太多,还会导致系统瘫痪。 每个Linux进程在进程表里都有一个进入点(......
Linux命令 2019年04月19日 16:24:30

运维职责思考

一个运维工程师/运维开发工程师,因为经常要写一些运维工具和平台及自动化工具,所以经常会思考一些运维规范化问题,介绍我眼中运维人员的职责。 运维人员应该有以下职责: 制定规范,统一的规范才可以批量操作 提供基础设施,支撑业务系统的公共需求 故障定位和处理,快速发现问题,提前预知问题 为研发提供咨询服务,一起讨论,寻求最佳项目架构与实践 各方面细细道来~~~ 制定规范 比如,操作系统的版本,必须要有统......
其他 2019年04月19日 16:18:59