Logstash 修改日志输出索引默认模版中的分片和备份
在 kibana 执行
GET /_template/logstash
获取 es 中 logstash 的模版信息。
有时候我们需要使用 https 安全协议,本文记录在 SpringBoot 项目启用 https。
https://logging.apache.org/log4j/2.x/security.html
受影响的版本:所有 log4j-core 版本 >=2.0-beta9 和 <=2.14.1
Apache Log4j <=2.14.1 在配置、日志消息和参数中使用的 JNDI 功能不能防止攻击者控制的 LDAP 和其他 JNDI 相关端点。当启用消息查找替换时,可以控制日志消息或日志消息参数的攻击者可以执行从 LDAP 服务器加载的任意代码。从 log4j 2.15.0 开始,默认情况下已禁用此行为。
可以将 log4j2 升级到 2.15.0 版本,修复解决该问题。
对于其他版本:
log4j2.formatMsgNoLookups 或环境变量 LOG4J_FORMAT_MSG_NO_LOOKUPS=true。PatternLayout 可以修改所有模式以将消息转换器指定为 ,%m{nolookups} 而不仅仅是 %m。JndiLookup 从类路径类:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class。Log4jCoreTest.java 文件:
import org.apache.logging.log4j.core.util.Constants;
public class Log4jCoreTest {
public static void main(String[] args) {
boolean value = Constants.FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS;
System.out.println("value is:"+value);
}
}
依赖 Jar 放入 lib 文件夹下:
$ ls
lib Log4jCoreTest.class Log4jCoreTest.java
$ ls lib/
log4j-api-2.13.3.jar log4j-core-2.13.3.jar
编译 Java 文件
javac -encoding UTF-8 -classpath lib/log4j-core-2.13.3.jar Log4jCoreTest.java
运行 Java 文件
java -classpath .:./lib/* Log4jCoreTest
$ java -classpath .:./lib/* Log4jCoreTest
value is:false
$ java -classpath .:./lib/* -Dlog4j2.formatMsgNoLookups=true Log4jCoreTest
value is:true
$ LOG4J_FORMAT_MSG_NO_LOOKUPS=false
$ java -classpath .:./lib/* Log4jCoreTest
value is:false
$ LOG4J_FORMAT_MSG_NO_LOOKUPS=true
$ java -classpath .:./lib/* Log4jCoreTest
value is:true
$ LOG4J_FORMAT_MSG_NO_LOOKUPS=false
$ java -classpath .:./lib/* Log4jCoreTest
value is:false
修改环境变量:
$ vi .bash_profile
export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
$ source .bash_profile
环境变量参考:
$ ls lib/
log4j-api-2.15.0.jar log4j-core-2.15.0.jar
$ java -classpath .:./lib/* Log4jCoreTest
value is:true
验证 jvm 参数对 Jar 包中参数值的影响。