log

告警系统邮件引擎、运行告警系统

一曲冷凌霜 提交于 2020-03-30 11:47:48
告警系统邮件引擎 邮件首先用到mail.py之前多次用到所以直接把以前的拷贝过来,如果没有直接到https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py下载 拷贝mail.py 拷贝完mail.py还不算完成,因为最核心的地方不是mail.py而是mail.sh。因为在所有的子脚本中,用到的都是mail.sh。这个mail.sh他的作用是 编辑mail.sh [root@100xuni1 mail]# vim mail.sh log=$1 t_s=`date +%s` t_s2=`date -d "2 hours ago" +%s` if [ ! -f /tmp/$log ] then echo $t_s2 > /tmp/$log fi t_s2=`tail -1 /tmp/$log|awk '{print $1}'` echo $t_s>>/tmp/$log v=$[$t_s-$t_s2] echo $v if [ $v -gt 3600 ] then ./mail.py $1 $2 $3 echo "0" > /tmp/$log.txt else if [ ! -f /tmp/$log.txt ] then echo "0" > /tmp/$log.txt fi nu=`cat

kafka常见面试题

瘦欲@ 提交于 2020-03-30 08:52:57
https://blog.csdn.net/qq_28900249/article/details/90346599 1、为什么要使用 kafka,为什么要使用消息队列 缓冲和削峰 解耦和扩展性 冗余 健壮性 异步通信 2、kafka的分区与消费者关系 分区(partition) kafka中的topic可以细分为不同的partition,一个topic可以将消息存放在不同的partion中。 leader和follower 每个partition可以设置一个leader和多个follower。kafka的消息没有设置读写分离,每个消息发送时,都是发送至对应的partition的leader-partition,follower-partition主要是为了备份数据而存在,当leader-partion出现故障时,数据已经完全同步的follower-partition也会切换成leader-partition。 AR和ISR AR:分区中所有的副本统称为AR。 ISR:所有与leader节点保持同步的副本(包括leader节点)组成的节点,生产者首先将消息发送给leader副本,然后follower从leader中同步消息。 ISR是AR的子集 。 数据的存储 在partion中,一个topic中的数据存放在不同的partion中,一个分区的内容会存储成一个log文件

[LeetCode] 937. Reorder Data in Log Files 日志文件的重新排序

ぐ巨炮叔叔 提交于 2020-03-30 08:18:49
You have an array of `logs`. Each log is a space delimited string of words. For each log, the first word in each log is an alphanumeric identifier . Then, either: Each word after the identifier will consist only of lowercase letters, or; Each word after the identifier will consist only of digits. We will call these two varieties of logs letter-logs and digit-logs . It is guaranteed that each log has at least one word after its identifier. Reorder the logs so that all of the letter-logs come before any digit-log. The letter-logs are ordered lexicographically ignoring identifier, with the

[转帖]安装HANA数据库

爱⌒轻易说出口 提交于 2020-03-30 06:51:03
安装数据库 https://support.huawei.com/enterprise/zh/doc/EDOC1100082491/bc8e25fe 以root用户名登录服务器,打开“Terminal”窗口。 执行 cd 命令切换目录到SAP HANA数据库软件拷贝所在的目录下面,本例是“cd /hana/shared/hana2.0”。 执行 chmod +x * 命令,增加可执行权限。 hw00001:/hana/shared/hana2.0 # chmod +x * 执行 ./SAPCAR_816-80000935.EXE -manifest SIGNATURE.SMF -xvf IMDB_SERVER20_020_0-80002031.SAR 命令解压数据库文件(SAPCAR和IMDB_SERVER的具体版本根据实际需求安装),得到一个 SAP_HANA_DATABASE 目录以及“SIGNATURE.SMF”文件夹。 hw00001:/hana/shared/hana2.0 # ./SAPCAR_816-80000935.EXE -manifest SIGNATURE.SMF -xvf IMDB_SERVER20_020_0-80002031.SAR 执行命令 cp SIGNATURE.SMF SAP_HANA_DATABASE/ 把解压生成的校验文件

MySQL基础篇(07):用户和权限管理,日志体系简介

淺唱寂寞╮ 提交于 2020-03-30 00:51:42
本文源码: GitHub·点这里 || GitEE·点这里 一、MySQL用户 1、基础描述 在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个root用户,作为数据库管理员,拥有所有权限。在多用户的应用场景下,可能需要给不同的用户分配不同的权限,用来提升系统的稳定性,比如常见:报表库只提供读权限,或者开放给第三方的库,也只提供可读用户。 2、用户管理 基本描述 MySQL将用户信息存储在系统数据库mysql的user表中。根据用户名密码和客户端主机来定义帐户。 用户密码:基本验证操作 ; 客户端IP:类似黑白名单的限制,支持通配符表达式 ; SELECT t.`Host`,t.`User`,t.authentication_string FROM mysql.`user` t ; 添加用户 可以对user表进行增删改查一系列操作,进而添加用户,不同的用户就会涉及到不同的操作权限,这就是另外一个问题:用户的权限管理。 这里添加一个user01用户,作为权限模块的测试用户,权限先给和root用户一样的权限。 INSERT INTO `mysql`.`user`(`Host`, `User`, `authentication_string`) VALUES ('%', 'user01', '

vue安装配置+声明周期

荒凉一梦 提交于 2020-03-29 22:11:35
VUE 组件化、快速开发 vue的生命周期: beforeCreate 组件刚刚被创建 created 组件创建之后 beforeMount 组件挂载之前 mounted 组件挂载之后 beforeDestroy 组件销毁之前 destroyed 组件销毁之后 vue安装 首先要先安装node.js,然后再安装npm,然后换cnpm淘宝镜像 由于使用cmd进入指定目录非常不智能,因此推荐安装git 去git官网下载,傻瓜式安装即可 安装成功后进入项目目录,右键-git bash here 全局安装 cnpm install --global vue-cli 创建一个基于webpack模板的新项目 vue init webpack my_project 这样代表安装完成,查看项目 安装依赖包 cd my_project cnpm install cnpm run dev 在浏览器访问 localhost:8080 然后在编辑器打开项目,爱用啥编辑器就用啥,sublime也行,不过我最近比较喜欢vscode 在my_project的src目录下,新建文件夹pages,在pages下新建文件夹demo1,在demo1下新建文件index.vue 在index.vue里敲点代码 然后打开router->index.js 这个文件是用来设置路由的 浏览器访问: 接下来修改index

JavaScript检测浏览器

让人想犯罪 __ 提交于 2020-03-29 09:18:46
Detect Browser <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>detect browser</title> </head> <body> <div id="welcome"> <p>欢迎使用 <b></b> detect browser</p> </div> //使用whatismybrowser网站检测 <iframe src ="https://www.whatismybrowser.com/feature/iframe?size=small&bgcolor=BFBFB0&color=3E4759&bordercolor=8C7268&capabilities=true&screen=true&ip_address=true&viewmore=true" width ="340" height ="330" style ="border:none;"></iframe> <script type="text/javascript"> window.onload=function(){ console.log("start:"); //检测无头浏览器 if (/HeadlessChrome/.test(window.navigator.userAgent)) { console.log(

Logger日志打印规范

╄→尐↘猪︶ㄣ 提交于 2020-03-29 05:19:24
首先来看一下比较常用的Logger日志级别(部分未列出): error - 运行期错误日志记录,应该有专门的error日志文件。; warn - 警告信息,如程序调用了一个即将作废的接口,接口的不当使用,运行状态不是期望的但仍可继续处理等; info - 有必要的事件信息记录。 debug - 调试信息,业务处理进行状态,当前的变量值等; trace - 一些更详细的跟踪信息; 鉴于我们是一个金融系统,流量还是不算很大,我个人认为debug级别和info级别可以统一归为info级别下打印,这是考虑到现在系统稳定性不够,处于一个快速迭代开发的过程中,线上问题可能随时都有,所以将业务流转与部分变量值打印出来还是很有必要的。error记录错误日志,但如果错误是预期会发生的,并且已经有了其他的处理流程,则建议使用warn级别。例如在try-catch中catch块里处理后继续流程的日志记录。 1.Logger对象的定义: <strong>private static final Logger logger = LoggerFactory.getLogger(Test.class);</strong> 2.日志中不出现计算或方法调用,防止在打印日志的时候报错。 之前在上家公司的时候就确实出现过因打印日志而系统RunTimeException的,不应该出现。 3.try-catch如果往外抛出

备份恢复

隐身守侯 提交于 2020-03-28 23:29:22
配置可恢复性 控制文件 SQL> show parameter control_files SQL> select * from v$controlfile; 1,修改路径: $ cd $ORACLE_HOME/dbs $ cp spfileorcl.ora spfileorcl.ora.bak SQL> alter system set control_files='/u01/app/oracle/oradata/orcl/control01.ctl', '/home/oracle/control02.ctl' scope=spfile; SQL> shutdown immediate $ mv /u01/app/oracle/fast_recovery_area/orcl/control02.ctl /home/oracle/control02.ctl SQL> startup SQL> show parameter control_files SQL> select * from v$controlfile; 2,增加镜像: SQL> alter system set control_files='/u01/app/oracle/oradata/orcl/control01.ctl', '/home/oracle/control02.ctl', '/home/oracle

nodejs爬虫简单实现

試著忘記壹切 提交于 2020-03-28 21:02:40
const fs = require('fs'); const URL = require('url') const gbk = require('gbk') const { JSDOM } = require('jsdom') class Getdata { static http(url) { let Url = URL.parse(url) let http; if (Url.protocol == 'http:') { http = require('http') return { "http": http, 'hostname': Url.hostname, 'path': Url.path } } else { http = require('https') return { "http": http, 'hostname': Url.hostname, 'path': Url.path }; } } get(url, Filename) { Getdata.a += 1 let app = Getdata.http(url); let https = app.http.request({ 'hostname': app.hostname, 'path': app.path }, res => { if (res.statusCode == 200) { //