Zabbix日志监控插件
#!/usr/bin/env python
# coding:utf-8
import re
import os
import sys
import logging
logging.basicConfig(level=logging.DEBUG, # 定义输出到文件的log级别,大于此级别的都被输出
format='%(asctime)s %(filename)s : %(levelname)s %(message)s', # 定义输出log的格式
datefmt='%Y-%m-%d %H:%M:%S', # 时间
filename='/etc/zabbix/scripts/check_log/check.log', # log文件名
filemode='a+')
logfile=sys.argv[1]
keyword=sys.argv[2]
statfile='/tmp/logfilestat.txt'
logging.info("======================================================Start======================================================")
logging.info('log_file: {0}, keyword: {1} '.format(logfile, keyword))
try:
f = open(statfile, 'r')
# 获取文件读取的offset
offset = f.readlines()
f.close()
except Exception,e:
logging.info('{0} file not exits,create stat file!'.format(statfile))
# 如果是第一次使用,文件读取状态不存在,这重置读取标志为空
offset = []
alter = []
with open(statfile, 'w+') as offwr:
with open(logfile, 'r') as f:
# 如果读取状态文件,为空,则重置为从头读取
if len(offset) == 0:
f.seek(0, 2)
elif len(offset) == 2:
# 判断文件是否为新文件
# 文件没有改变,则从上次读取的位置继续读取
if int(offset[1]) == int(os.stat(logfile)[1]):
logging.info("start_offset: {0}".format(offset[0].strip()))
f.seek(int(offset[0].strip()))
else:
# 如果文件改变了,则从头开始去读
logging.info("start_offset: 0")
f.seek(0)
for i in f.readlines():
# 将查询结果用0和1存入list中
if re.search(str(keyword), i.strip()):
logging.error("Find {0} the key!!".format(keyword))
alter.append(0)
else:
alter.append(1)
# 将文件读取位置和inode值写入状态文件
offwr.write(str(f.tell()))
offwr.write("\n")
offwr.write(str(os.stat(logfile)[1]))
f.close()
offwr.close()
logging.info("======================================================End======================================================")
# set是去重,如果list中包含1和2,则长度为2,应当报警
if len(set(alter)) == 1:
print 100
else:
print 200
Zabbix日志监控插件的更多相关文章
- zabbix日志监控
一般情况下,日志最先反映出应用当前的问题,在海量日志里面找到我们异常记录,例如监控系统日志.nginx.Apache.业务日志,然后记录下来,并且根据情况报警. 1.日志监控项介绍 最主要的是监控日志 ...
- zabbix oracle监控插件orabbix部署安装
1,下载orabbix插件包(插件包同时满足在大部分POSIX-linux及unix和大部分版本的windows下运行,玩转类似但不等同于Tomcat) wget http://www.smartma ...
- zabbix通过percona插件监控mysql
percona zabbix mysql-plugin是percona发布的一个使用zabbix监控mysql数据库的工具,这款工具比zabbix自带的监控模板要强大的多,毕竟percona是Mysq ...
- 转 zabbix debug and zabbix使用percona插件监控mysql
########## https://www.cnblogs.com/keithtt/p/8542987.html zabbix使用percona插件监控mysql 1.添加percona仓库. ...
- zabbix通过第三方插件percona监控mysql数据库
zabbix通过第三方插件percona监控mysql数据库 ...
- 24 Zabbix系统配置日志监控告警--关键字触发
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 24 Zabbix系统配置日志监控告警--关键字触发 trapper是被监控主机主动发送数据给za ...
- 采用link方式解决zabbix对于备份监控和ORACLE日志监控由于路径不统一的问题
#对于备份监控和ORACLE日志监控由于路径不统一,我们可以采用link的方式如:#ln -s 原路径 新路径(/zabbix/logs)#新路径统一放在/zabbix/logs下具体看模板指定. # ...
- 015.Zabbix的日志监控配置
一 日志监控概述 Zabbix可用于集中监控和分析日志,支持有日志轮询的日志监控分析.当日志中出现相关警告信息(如警告.报错等),可以发送通知给用户.日志监控功能,必须满足以下两个条件: Zabbix ...
- zabbix的日志监控
前提条件是该日志文件对于启动zabbix agent进程的用户开启了可读权限,而且该日志的路径对该用户开方x权限,让能取到这个日志文件 第一个参数可以不用引号,前提是zabbix用户可以进入文件路径, ...
随机推荐
- 分享Python知识的第三天
python第一节 1.变量 变量,是用于在内存中存放程序数据的容器 计算机的核心为"计算",计算便需要数据源,数据源要存在内存中方便使用,这时就要用到变量,比如把某人吗名字,年龄 ...
- Android OkHttp + Retrofit 下载文件与进度监听
本文链接 下载文件是一个比较常见的需求.给定一个url,我们可以使用URLConnection下载文件. 使用OkHttp也可以通过流来下载文件. 给OkHttp中添加拦截器,即可实现下载进度的监听功 ...
- RF自定义库和关键字
1:在D:\work_software\python\Lib\site-packages 文件夹下, 新建python package文件夹 ,例如我的是TestLibrary 建好后的完整路径:D: ...
- Spring Security 入门(一)
当你看到这篇文章时,我猜你肯定是碰到令人苦恼的问题了,我希望本文能让你有所收获. 本人几个月前还是 Spring 小白,几个月走来,看了 Spring,Spring boot,到这次的 Spring ...
- Ubunut18 安装docker环境&&AWD攻防平台部署
docker:有两个版本:docker-ce(社区版)和docker-ee(企业版). 参考官网地址:https://docs.docker.com/engine/installation/linux ...
- Python之random模块和time模块
1.random()模块的使用 import random x = random.random() y = random.random() print(x,y*10) #random.random ...
- Docker安装ELK并实现JSON格式日志分析
ELK是什么 ELK是elastic公司提供的一套完整的日志收集以及前端展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch.Logstash和Kibana. 其中Logstash ...
- perftools::tcmalloc
安装libunwind wget http://ftp.yzu.edu.tw/nongnu/libunwind/libunwind-1.1.tar.gz ./configure make make i ...
- ThingJS和传统3D开发的区别
物联网3D可视化开发已经辐射到各行各业,无论车间还是消防,城市还是粮仓,亦或是地铁.科技园,物联网可视化是科技的进步,也是行业的进步.而传统的3D可视化开发实施起来并不那么乐观.如果使用ThingJS ...
- 基于 HTML5 + Canvas 实现楼宇自控系统
前言 楼宇自控是指楼宇中电力设备,如电梯.水泵.风机.空调等,其主要工作性质是强电驱动.通常这些设备是开放性的工作状态,也就是说没有形成一个闭环回路.只要接通电源,设备就在工作,至于工作状态.进程.能 ...