- 浏览: 72466 次
- 性别:
- 来自: 上海
-
最新评论
-
di1984HIT:
写的不错,学习了、
JAVA-JVM分析工具 -
mingren135:
本机这样做可以取到服务器日志,但部署到服务器,因java进程是 ...
j2ssh实现日志搜索
文章列表
批量查询日志的脚本,自己用着还行,如果给别人也还需要复制一份。如能够把多台机器的日志搜索做成web后台,这样就方便了。
上篇博客解决了登录服务器的信任登录交互问题,那么我们就能够更方便的登录到机器上执行命令。这里我用的是SSHTools ,它是一组 Java 的 SSH 应用和开发包,包括:Java SSH API, SSH Terminal, SSH secured VNC client, SFTP client and SSH Daemon。
POM中引入sshtools:
<dependency>
<groupId>sshtools< ...
Linux-ssh公钥登录
- 博客分类:
- Linux
随着线上机器的增多,在多台机器上查找日志的需求越来越多了,最近决定写个web版的日志搜索后台,第一个要解决的问题就是频繁的人机交互问题。SSH命令远程执行命令首先需要建立相关主机间的信任关系,否则在执行命令前SSH命令会提示你输入用户密码,不利于脚本的自动化。
建立信任关系步骤:
1)在一台机器上生成本机的公钥和私钥文件:ssh-keygen -t rsa
2)~/.ssh下会出现两个文件:idrsa和idrsa.pub。其中idrsa.pub为公钥文件,将其内容复制到远程主机的
~/.ssh目录下的authorized_keys文件中
然后就可以在不输入密码的情况下在远程主 ...
Python-点点滴滴
- 博客分类:
- 脚本语言
工作都是搞服务端比较多,最近折腾上脚本了。。。希望能持续补充一些实用的东东,这些都和具体的语法关系不大
1)获取本机hostname和ip
os.uname()
('Linux', 'v333444.sqa.cma', '2.6.18-164.el5xen', '#1 SMP Tue Aug 18 15:59:52 EDT 2009', 'x86_64')
os.uname()[1]
'v333444.sqa.cma'
import socket
socket.gethostname()
'v333444.sqa.cma'
socket.gethostbyna ...
Linux-输出重定向
- 博客分类:
- Linux
常用文件重定向命令哦
command > filename 把标准输出重定向到一个新文件中
command >> filename 把标准输出重定向到一个文件中(追加)
command 1 > fielname 把标准输出重定向到一个文件中
command > filename 2>&1 把标准输出和标准错误一起重定向到一个文件中
command 2> filename 把标准错误重定向到一个文件中
command 2>> filename 把标准输出重定向到一个文件中(追加)
command >> ...
Linux-常用命令(一)
- 博客分类:
- Linux
Linux只所以受到程序员的欢迎,一部分原因是本身自带很多有用的命令,再结合shell等脚本就可以玩出很多花样,这里总结一下工作场景中用到的命令。
1)grep:按照某种匹配规则搜索文件,并将符合匹配条件的行输出
场景1:间隔一定时间段的2次tail日志结果保存到文件a和b,取a、b的差集(b-a)得到增量日志
grep -F -v -f a.log b.log | sort | uniq > data.log
补充说明,取(a∩b):
grep -F -f aa.log bb.log | sort | uniq
还有comm命令也能实现上面的需求,
comm ...
Python-日期时间模块
- 博客分类:
- 脚本语言
Python和时间相关的模块有2个:time、datetime
time模块,常用的方法
1)time()方法:返回UTC时间1970年1月1日至今有多少秒
time(...)
time() -> floating point number
Return the current time in seconds since the Epoch.
Fractions of a second may be present if the system clock provides them.
2)localtime()方法:返回 ...
今天迎来了2013的第一场大雪,离2002年的第一场雪已经过去11年了,真真切切的感受到什么是弹指一挥间。最近工作中用到了CP模块,顺便就总结一下。
#!/usr/bin/env python
import ConfigParser as cp
def read(cf):
for section in cf.sections():
print '[' + section + ']'
for option in cf.options(section):
print option + "=" ...
Python实战1-解析日志模块
- 博客分类:
- 脚本语言
根据用户提供的分隔符,分解日志数据
该模块作用有2个:
1)提前检测能否正确解析日志,否则用户需要修改分隔符,或者日志格式
2)准备导入数据库的数据
logparse.py
def parselogline(line, tupleseperatorlist):
'''
input
line: line in log file
tupleseperatorlist: seperators in tuple
output
splited values
'''
dat ...
Python实战1-监测线上日志,为系统稳定保驾
- 博客分类:
- 脚本语言
线上系统的稳定,不仅需要细心的编程,对各种临界、异常情况的考虑,也包括在系统出现故障的情况下,我们能在第一时间发现并定位,快速解决问题。这里我想借助python解析关键点的线上日志,并将解析结果导入sqlite数据库,通过一些方式获取统计结果(比传统的grep xxx要快速和方便很多),这样在系统beta发布或外部因素影响时,观察若干分钟,对比关键点的日志统计数据就能最快的发现系统是否稳定运行。
分析问题后,觉得可以通过下面几个模块协作来完成我的需求
1)日志记录行数据切分检测:用户提供1条日志样本和数据分隔符,正确取出数据
2)数据库表创建:用户提供表字段名、字段和日志行数 ...
Python-字符串定义
- 博客分类:
- 脚本语言
Writing is an attitude!
定义Python字符串的方式有若干种:
1)单引号或双引号
print 'aaa'
print "aaa"
#包含引号的字符串
print 'aa"bb"cc'
print "aa'bb'cc"
2)三引号
#多行字符串
print '''aaaaaa
bbbbbb'''
#包含任意单、双引号
print '''aaaa'bb'cccc"dddddd"eee'''
3)三者关系
#单引号中不能包含单引号,双、三引号都是一样,不能包 ...
Python-使用Sqlite
- 博客分类:
- 脚本语言
内嵌式数据库sqlite想必大家都听说过,Python内置了sqlite模块,提供了访问sqlite的统一标准。不同的Python版本带的sqlite版本不大一样,如果机器在Python环境中找不到sqlite3,则尝试导入sqlite2或sqlite模块试试。
我用到的机器安装的是Python 2.4.3 (#1, Jun 11 2009, 14:09:37),只能导入sqlite模块,使用方法上没有什么区别的。
以创建一张表,执行插入、查询、更新、删除为例,基本步骤如下:
1)创建数据库连接,如果aa.db文件不存在,则会自动新创建一个
conn = sqli ...
Python-特殊的下划线
- 博客分类:
- 脚本语言
1)看看下划线在模块变量命名的访问情况
a.py
corp = 'corp:taobao' #public
_corp = '_corp:taobao' #obey python coding convention, consider it as private
__corp = '__corp:taobao' #private
__corp__='__corp__:taobao' #special, python system use, user should not define like it
b.py
from a import *
print ...
Python-内置函数
- 博客分类:
- 脚本语言
最常用的有2个内置函数,通过它们可以查找需要的方法
1)dir:查看object、class上的属性或方法
2)help:查看object、class的详细说明
其它还有:
3)type:查看object类型
4)isinstance:判断object是否属于某class
5)len:返回object的长度
当然还有很多,可以通过sys模块来查看
import sys
print dir(sys.modules['__builtin__'])
Python-字符串处理
- 博客分类:
- 脚本语言
目前为止,自己写的脚本中,用到最多的就是字符串处理,但只是业余时间写写脚本,因此会忘掉一些简单方法,在这里总结一下。
1)截取字符串:有2种方式,孰优孰劣显而易见
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
Use of negative indices is not supported.
翻转字符串,x[::-1],-1是步长值
2)去除字符串前后空格
strip(...)
S.strip([chars]) -> string or unic ...
Python-开发工具
- 博客分类:
- 脚本语言
“工欲善其事必先利其器”,话虽这么说,其实很多人在学习一种编程语言时,一开始都不会在意IDE的,等这种语言入门之后,才会考虑有没有什么好用的开发工具等问题。这里我把学到的一点点Python知识和大家分享一下,也是对过去的一点总结。
1)Eclipse+PyDev,有代码提示和debug功能,推荐使用
2)IDLE,Windows下安装Python后自带的解释器,
该IDE遇到的问题:
把脚本复制到linux下,执行会报错:-bash: ./match.py: /usr/bin/python^M: bad interpreter: 没有那个文件或目录
该问题 ...