Oracle 自动化运维-Python监控Oracle告警日志
一:paramiko模块的安装
二:使用paramiko监控Oracle alert日志
参考:http://www.zhaibibei.cn/python1/3.1/
一:paramiko模块的安装
paramiko模块的安装
环境设置
Linux系统为 Centos 6.7
Python环境为 Python 3.6
连接Unix类服务器模块: paramiko
这里我们采用pip3命令安装,会自动下载缺失的模块
[oracle@jumplinux01 bin]$ ./pip3 install paramiko
Collecting paramiko
Downloading https://files.pythonhosted.org/packages/06/1e/1e08baaaf6c3d3df1459fd85f0e7d2d6aa916f33958f151ee1ecc9800971/paramiko-2.7.1-py2.py3-none-any.whl (206kB)
100% |████████████████████████████████| 215kB 658kB/s
Collecting bcrypt>=3.1.3 (from paramiko)
Downloading https://files.pythonhosted.org/packages/8b/1d/82826443777dd4a624e38a08957b975e75df859b381ae302cfd7a30783ed/bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56kB)
100% |████████████████████████████████| 61kB 821kB/s
Collecting cryptography>=2.5 (from paramiko)
Downloading https://files.pythonhosted.org/packages/45/73/d18a8884de8bffdcda475728008b5b13be7fbef40a2acc81a0d5d524175d/cryptography-2.8-cp34-abi3-manylinux1_x86_64.whl (2.3MB)
100% |████████████████████████████████| 2.3MB 339kB/s
Collecting pynacl>=1.0.1 (from paramiko)
Downloading https://files.pythonhosted.org/packages/27/15/2cd0a203f318c2240b42cd9dd13c931ddd61067809fee3479f44f086103e/PyNaCl-1.3.0-cp34-abi3-manylinux1_x86_64.whl (759kB)
100% |████████████████████████████████| 768kB 278kB/s
Collecting six>=1.4.1 (from bcrypt>=3.1.3->paramiko)
Downloading https://files.pythonhosted.org/packages/65/eb/1f97cb97bfc2390a276969c6fae16075da282f5058082d4cb10c6c5c1dba/six-1.14.0-py2.py3-none-any.whl
Collecting cffi>=1.1 (from bcrypt>=3.1.3->paramiko)
Downloading https://files.pythonhosted.org/packages/f1/c7/72abda280893609e1ddfff90f8064568bd8bcb2c1770a9d5bb5edb2d1fea/cffi-1.14.0-cp36-cp36m-manylinux1_x86_64.whl (399kB)
100% |████████████████████████████████| 399kB 194kB/s
Collecting pycparser (from cffi>=1.1->bcrypt>=3.1.3->paramiko)
Downloading https://files.pythonhosted.org/packages/ae/e7/d9c3a176ca4b02024debf82342dab36efadfc5776f9c8db077e8f6e71821/pycparser-2.20-py2.py3-none-any.whl (112kB)
100% |████████████████████████████████| 112kB 151kB/s
Installing collected packages: six, pycparser, cffi, bcrypt, cryptography, pynacl, paramiko
Successfully installed bcrypt-3.1.7 cffi-1.14.0 cryptography-2.8 paramiko-2.7.1 pycparser-2.20 pynacl-1.3.0 six-1.14.0
问题:在linux环境下,安装完python3.6.2后,如果发现并没有pip3,需要手动安装
[root@jumplinux01 ~]# wget https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz
[root@jumplinux01 ~]# ll -rth pip-18.0.tar.gz
-rw-r--r-- 1 root root 1.2M Jul 22 2018 pip-18.0.tar.gz
[root@jumplinux01 ~]# cp pip-18.0.tar.gz /home/oracle/softwore/
[root@jumplinux01 ~]# chown oracle.oracle /home/oracle/softwore -R
[root@jumplinux01 ~]# su - oracle
[oracle@jumplinux01 ~]$ cd softwore/
[oracle@jumplinux01 softwore]$ tar -xvf pip-18.0.tar.gz
[oracle@jumplinux01 softwore]$ cd pip-18.0
[oracle@jumplinux01 pip-18.0]$ python setup.py install
......
Installed /usr/local/python36/lib/python3.6/site-packages/pip-18.0-py3.6.egg
Processing dependencies for pip==18.0
Finished processing dependencies for pip==18.0
验证安装
import paramiko 无报错说明安装导入成功
[oracle@jumplinux01 bin]$ python
Python 3.6.1 (default, Mar 16 2020, 21:33:03)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
>>>
二:使用paramiko监控Oracle alert日志
环境设置
Linux系统为 Centos 6.7
Python环境为 Python 3.6
连接Unix类服务器模块: paramiko
使用的命令
我们使用grep命令来判断alert日志中是否有ORA Error及Checkpoint报警
监控alert日志程序
如下程序使用paramiko连接linux/Unix服务器后查看alert日志查看报警关键字,当发现错误时输入结果
程序名称为:checkoraclelog.py
[oracle@jumplinux01 script]$ vim checkoraclelog.py
#!/usr/bin/python
#coding=utf8
import paramiko
def oraclelog(ssh,path):
alert_log=[]
command='grep -E \'ORA-|Checkpoint|Error\' '+path
stdin,stdout,stderr=ssh.exec_command(command)
err=stderr.readlines()
if len(err) != 0:
print (err)
return False
else:
stdout_content=stdout.readlines()
if len(stdout_content)!=0:
result='\n'.join(stdout_content)
result= 'Oralce log on '+hostname+ ' have errors\n'+'The log path is '+path+'\n'+result
alert_log.append(result)
return alert_log
else:
return 'noerror'
if __name__ == '__main__':
hostname='192.168.2.222'
username='root'
password='******'
try:
#使用SSHClient方法定义ssh变量
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接目标服务器
ssh.connect(hostname=hostname,port=22,username=username,password=password)
path='/u01/app/oracle19/diag/rdbms/cjcdb01/cjcdb01/trace/alert_cjcdb01.log'
alert_log=oraclelog(ssh,path)
ssh.close()
if alert_log:
if alert_log !='noerror':
for i in alert_log:
print (i)
else:
print ('There is no ORA- error on '+hostname)
except Exception as e:
print (hostname+' '+str(e))
运行效果:
[oracle@jumplinux01 script]$ python checkoraclelog.py
Oralce log on 192.168.2.222 have errors
The log path is /u01/app/oracle19/diag/rdbms/cjcdb01/cjcdb01/trace/alert_cjcdb01.log
Error attempting to elevate VKTM's priority: no further priority changes will be attempted for this process
ORA-65221 signalled during: alter pluggable database application APP$CDB$CATALOG begin install '18.0.0.0.0'...
ORA-65214 signalled during: alter pluggable database application APP$CDB$CATALOG end install '18.0.0.0.0'...
ORA-65213 signalled during: alter pluggable database application APP$CDB$SYSTEM begin install '1.0'...
ORA-65214 signalled during: alter pluggable database application APP$CDB$SYSTEM end install '1.0'...
ORA-65209 signalled during: create lockdown profile PRIVATE_DBAAS...
ORA-65209 signalled during: create lockdown profile SAAS...
ORA-65209 signalled during: create lockdown profile PUBLIC_DBAAS...
Checkpoint not complete
欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!