ELK日志系统的麻烦日常
软件:ELK+filebeat 7.1.1
问题不定期更新,记录平时遇到的ELK+filebeat日志系统的坑。
请对logstash和elasticsearch使用集群单机部署的就没有命久的,总是启停很麻烦。logstash为多实例,es为集群。尽量保证一台机器部署一个logstash或者es实例。这两个都是吃内存大户。如果成本有所不足可以考虑es的热温冷架构。热节点使用ssd提升io,稳冷节点使用普通硬盘即可。
filebeat传输logstash启动负载均衡
#vim filebeat.ymloutput.logstash: # The Logstash hosts hosts: %logstash_url_list% loadbalance: true
loadbalance为false则会变成类似主备的方式向logstash输送数据。filebeat会自动检测想要传输数据的logstash是否忙,如果忙则传输到另一个logstash实例。
filebeat支持使用环境变量,结果环境变量是中文,linux系统编码是GBK,elk系统默认编码utf-8,最后传 ...
踩坑日记-python的浮点数比对
软件:python3
之前写算法的时候遇到个非常细小但是致命的错误,当时使用异常检测算法,遇到了检测出的异常非常离谱。整个算法似乎不生效。后来debug一点一点排查原因,发现了原来算法逻辑中有对浮点数进行相等判断,当时直接使用了 “==”。这个地方出了大问题。
对于浮点数的判断,计算机中对于浮点数无法在数学上进行解析完全相等。计算机只能尽可能的数值模拟一个值。即使对于类似于3.0这样的在我们看来是一个整数的值,对于计算机来说,他可能内部表达为3.000000000001。因此对于3 和 3.000000000001进行 “==” 判断,返回的一定是false。
因此对于python的浮点数判断,只能使用近似。这就需要使用到 math.isclose() 函数
math.isclose(a,b,abs_tol,rel_tol)
a:必要, 检查紧密度的第一个值
b:必要, 检查紧密度的第二个值
rel_tol: 可选。 相对公差。 它是值a和b之间的最大允许差。 默认值为1e-09
abs_tol: 可选。最小绝对公差。它用于比较接近0的值。该值必须至少为0
>> ...
java小知识
编程语言:java
不定期更新,记录自己学习的java小知识。
Java放置在堆中的变量有默认值,如对象数据,类的属性等;而栈中的(局部变量),方法区中的(static属性等)变量必须要有初始值,无默认值。
Java 方法,属性,构造器,内部类的权限修饰符:public,缺省,protected,public;类修饰符:public,缺省
用Arrays的copyOf方法拷贝原数组内容,并设置新的长度。ArrayList扩容需要做一次数组拷贝,如果是反复扩容,肯定会对程序的运行效率产生影响。所以在初始化ArrayList的时候,尽量设置初始化容量,避免其扩容。
java继承时,父类中的private属性和方法都会被继承,但是因为封装的原因不可使用对象调用。即 类内this. 与类外对象object. 方式调用都不行。
Java重写(覆盖)方法的时候,子类方法权限不小于父类方法权限。
java属性不会出现覆盖,如果子类父类中出现同名的属性,则实际上有了两个属性,需要用this和super区分。默认调用子类自己的。
java多态,编译看左边父类, ...
hexo指令执行失败问题解决
软件:hexo,hexo主题(bufferfly)
问题今天重新部署hexo博客,出现了如下的问题,所有得hexo指令都报如下错误:
解决经过排查,原因是node版本太低。之前使用了nvm安装了多版本的node,当前切换到了低版本的node。这里切换回高版本即可解决问题。
虚拟机Ubuntu 18.04.2 LTS设置固定ip过程
操作系统:Ubuntu 18.04.2 LTS
虚拟机:VMware 12
设置多个虚拟机组件集群的时候,需要配置各个虚拟机有着不同的ip地址。因此这里简单介绍一下如何配置虚拟机ip。
设置虚拟机网络为nat模式
打开虚拟机网络编辑器选项
更改设置,取消DHCP服务,设定子网ip(该服务是用来动态分配ip地址)
网关ip
sudo vim /etc/network/interfaces 修改网络配置
# cat /etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto ens33 #查看自己的网卡名称,可以通过ifconfig命令查询iface ens33 inet static #设置该网卡为静态ipaddress 192.168.73.129 #静态IP地址设置netmask 255.255.255.0 #掩码设置gateway 192.168.73.2 #网关ip设置dns-nameservers 8.8.8. ...
运维经验
操作系统:linux
不定期更新,记录自己遇到的运维经验总结。
top命令 load average:三个值 分别代表 最近1分钟、最近5分钟和最近15分钟的平均负载
通常,如果系统的负载值超过了2,就说明系统比较繁忙了。Linux系统管理的要点在于定义究竟到什么程度才算是高负载。这个值取决于系统的硬件配置以及系统上通常运行的程序。对某个系统来说是高负载的值可能对另一系统来说就是正常值。
由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见,但如果近15分钟内的平均负载都很高,就说明系统可能有问题。
du -sh * | sort -nr 该命令可以用于对文件大小的排序显示
sort -n 在排序数值时非常有用
sort -r 逆序,从大到小
du -h 清楚显示
du -s 显示每个输出参数的总计,即仅显示总计,只列出最后加总的值
tar 的压缩与解压 https://www.cnblogs.com/hester/p/10449978.html
tar -zxvf filename.tgz下载了开源软件之后,你会经常看到文件名以.tgz结尾(.tar ...
好久不见
好久没有更新自己的博客了,过完年之后工作十分忙碌,比赛,项目,运维等等一系列事情需要去做。当时觉得一直不更新也不好,于是中途关闭了自己的博客。虽然博客关了,但这段时间的工作也一直保持学习。工作的过程也会遇到很多问题, 每次问题的解决对个人来说也是一次成长。这次重新开通博客也是希望能和更多的人交流。
最后,最近gitee没法开启个人博客。因此暂时只保留github的页面。之后也会同步gitee的个人博客。主要是github可能有时候访问较慢,有了gitee之后会好很多。
以上。o( ̄▽ ̄)ブ
java反射读取类的私有属性并且读取实例属性值
软件:java8
问题今天对自己写的代码分析,发现了很多不合适的地方,其中就有原先设计的bean不合理问题导致的后期需要重新侵入式的修改源代码,因此反射显得十分重要。
反射可以用于使用bean匹配数据时候,当bean本身发生变化的时候,如果不使用反射,则需要修改程序中的原始代码,修改bean的getter才能获取到新的数据。如果使用反射则不需要知道bean中具体目前有哪些属性,直接可以获取到属性列表,然后根据属性列表获得bean对应实例的值。只需要修改bean即可,而不需要修改调用bean初的其他逻辑代码。
假设有个Person类
public class Person { private String name; private int age; private String gender; //private String city; //假设增加了一个新的属性city // 省略get,set,有参空参构造,toString()}
如果不使用反射,如果为Person增加了一个新的属性,则需要修改调用逻辑的源代码。
@Testvo ...
java中String和byte[]中文转换的问题
软件:java8
问题今天在java的二进制byte和string类型的编解码中遇到了阻碍,因此仔细研究了一下相关的编解码问题。
本文介绍了java中 byte[] 和 String 的相互转换。
通过String的getBytes()方法是可以得到一个字符串的字节数组,但特别要注意的是,getBytes()方法将返回该操作系统默认的编码格式的字节数组。
string转byte[] 无中文
String strHello = "Hello World";byte[] bHello = strHello.getBytes();
byte[]转string 无中文
String strHello = new String(bHello);
string转byte[] 有中文
String strChinese = "大吉大利";byte[] bChinese_gbk = strChinese.getBytes("GBK"); //GBK编码格式byte[] bChinese_utf8 = strChinese.get ...
mysql-mysql5.5用户无需密码即可登录问题
软件:mysql5.5操作系统:centos7
问题今天在Linux上安装了mysql5.5,在创建了用户之后也正常设置了密码。但是登录的时候输入密码无法登录,但是不输入密码可以登录。
解决使用root用户登录mysql,查看user表。
主要问题在于user表内含有账号和密码都为空的项。将其删除即可
最后如果需要客户端远程访问,如Navicat,则需要以下命令
GRANT ALL PRIVILEGES ON *.* TO '你的用户名'@'%' IDENTIFIED BY "你的密码"; FLUSH PRIVILEGES;