作者:李继武
文档编写目的
本文档主要介绍如何在CM中添加ELK服务,及配置说明。
- 内容概述
1.部署Parcel
2.添加CSD
3.添加服务
4.配置说明
- 测试环境
1.Redhat7.2
2.CM5.16.2
部署Parcel
1.将elk添加到httpd服务目录下
2.将地址添加到CM的parcel配置中
3.下载分发parcel
4.激活
添加CSD
1.将csd文件ELK-YX-20200617-1.0-SNAPSHOT.jar放置在cloudera-scm-server服务的csd目录下
2.重启cloudera-scm-server服务
3.cloudera-scm-server服务重启后,登录管理界面,重启Cloudera Management Service
添加服务
1.添加服务
2.添加实例
Elasticsearch角色实例至少有一个,Kibana和Logstash角色实例可选择性配置
3.配置
- Elasticsearch:
cluster name: 集群名称(第一次指定后后续一般不再更改)
use_built_in_java: 是否使用内置的jdk(即Elasticsearch内置的openjdk14)
CUSTOM_JAVA_HOME: 在不使用内置的jdk时, 可手动指定JAVA_HOME。在既不使用内置jdk,也不手动指定JAVA_HOME时,将使用cm提供的JAVA_HOME。
ElasticSearch Path Data: 数据目录
network host: 绑定IP
ES_JAVA_OPTS: JVM的启动参数
Http Port(Elasticsearch Default Group): Http服务端口
Transport Port: transport绑定端口
- Kibana:
Server Host: 绑定IP
Logging Timezone: 日志时区
Kibana Path Data: 数据目录
Server Port: Http服务端口
- Logstash:
Http host: 绑定IP
Main Pipeline Config: main pipeline的配置文件地址
LS_JAVA_OPTS: JVM的启动参数
Logstash Path Data: 数据目录
Http Port(Logstash Default Group): Http服务端口
4.第一次启动时,elasticsearch将会启动失败,需要修改系统的[vm.max_map_count]以及 [max file descriptors] ,可点击左上角图标回到主页。
vm.max_map_count:
在每一台主机上修改/etc/sysctl.conf文件,添加vm.max_map_count=262144
max file descriptors:
该配置需在CM上配置,打开配置,找到Maximum Process File Descriptors,将elasticesearch角色相关的角色组设置为655350。
重启服务即可。
配置说明
1.部分配置请参照第四项添加服务说明。
注意:ES_JAVA_OPTS和LS_JAVA_OPTS这两项中无需再添加以下两项配置,agent会自动添加:
-XX: HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath
2.Elasticsearch角色配置
该角色通常包含jvm.options, elasticsearch.yml, log4j2.properties配置文件。
- jvm.options
该文件直接复制自parcel包中的jvm.options,如果需添加jvm参数,在ES_JAVA_OPTS配置项中添加
- elasticsearch.yml
该配置文件除第四项中说明的几项配置外,[cluster.initial_master_nodes]、[discovery.seed_hosts]为agent自动配置,无需手动添加,[path.logs]在日志配置项中配置,其余的配置主要通过高级配置项配置。
注意:elasticsearch.yml对应的高级配置项是Elasticsearch Advanced Configuration Snippet (Safety Valve) for elasticsearch.properties,添加时需以properties的格式添加,不能以yaml的格式添加。
比如在elasticsearch.yml中添加discovery.zen.ping_timeout为10s
- log4j2.properties
该配置文件通过CM上的日志配置以及parcel中默认的log4j2.properties文件合并生成。
CM上关于日志的配置有以下五项:
合并规则:
读取parcel中log4j2.properties配置文件的所有配置项,添加或者更新用户在高级配置项中配置的日志配置项,最后根据上图中Elasticsearch Log Directory、Elasticsearch Logging Threshold、Elasticsearch Max Log Size、Elasticsearch Maximum Log File Backups更新如下几个配置项:
rootLogger.level
appender.rolling_old.layout.pattern
appender.rolling_old.fileName
appender.rolling_old.filePattern
appender.rolling_old.policies.size.size
appender.rolling_old.strategy.fileIndex
appender.rolling_old.strategy.max
言外之意,如果要修改parcel中log4j2.propeties文件里已经定义的配置,那么在高级配置里重新定义即可,如果要新增一些配置,也是在高级配置项里添加,但上述几项配置即使在高级配置项中配置了,也会被覆盖,是无法生效的,需通过上图中后四个配置项进行配置。
- 其他配置
在CM配置中,关于Elasticsearch角色的配置还包含两个include_plugin_paths、include_local_config_file:
include_plugin_paths:可通过该配置添加插件路径,在启动时,agent将会先清空plugins目录,然后将这个配置项中配置的目录或者文件复制到plugins目录下。
include_local_config_file:可自动拷贝用户自定义的一些配置文件到进程启动时的config目录下,可配置多个。当配置的是文件路径地址时,该文件将直接拷贝到config目录下;当配置的是一个目录时,将把内部所有文件根据原目录的相对层级拷贝到config目录下。
3.Kibana角色配置
该角色的配置文件为kibana.yml,该配置文件将包含所有的配置,包括日志。
- kibana.yml
该配置文件除第四项中说明的几项配置外,[elasticsearch.hosts]为agent自动配置,无需手动添加,ElesticSearch Http protocol用于指定生成[elasticsearch.hosts]时的协议。其余的配置主要通过高级配置项完成。
注意:kibana.yml对应的高级配置项是Kibana Advanced Configuration Snippet (Safety Valve) for kibana.properties,添加时需以properties的格式添加,不能以yaml的格式添加。
比如在kibana.yml中添加elasticsearch.requestTimeout为60000。
- 日志配置
日志的配置主要通过以下五项来进行配置:
根据以上前四项,将会在kibana.yml配置文件中生成以下配置项:
logging.dest
logging.json(false)
logging.rotate.keepFiles
logging.rotate.enabled(true)
logging.rotate.everyBytes
logging.events
言外之意是,以上几个配置即使在kibana.yml的高级配置中或者日志高级配置项重新定义了,也不会生效。
另外,logging.json已被强制设置为false,如果要生成json格式的日志文件,需另外配置logger,如需添加logger或者其他日志配置,可在kibana.yml的高级配置中配置或者在日志高级配置中配置。
- 其他配置
Kibana plugin_paths:添加插件的路径,对应[plugin_paths]参数
Kibana plugin_dirs:添加包含插件的目录路径,对应[plugin_dirs]参数
4.Logstash角色配置
该角色通常包含jvm.options, logstash.yml, log4j2.properties配置文件。如果配置多pipeline,还包含pipelines.yml。
- jvm.options
该文件直接复制自parcel包中的jvm.options,如果需添加jvm参数,在LS_JAVA_OPTS配置项中添加。
- logstash.yml
该配置文件除了第四项中说明几项配置外,log_level通过下面的日志配置生成,其余的配置主要通过高级配置项完成。
注意:logstash.yml对应的高级配置项是Logstash Advanced Configuration Snippet (Safety Valve) for logstash.properties,添加时需以properties的格式添加,不能以yaml的格式添加。
比如在logstash.yml中添加pipeline.ordered为false
当Multiple Pipelines为false时,需指定path.config或者在高级配置项中添加config_string配置。当Multiple Pipelines为true时,那么path.config或config_string将会失效,将根据Logstash Advanced Configuration Snippet (Safety Valve) for pipelines.properties生成pipelines.yml或者拷贝本地的pipelines.yml。
- pipelines.yml
如果Logstash Advanced Configuration Snippet (Safety Valve) for pipelines.properties中有值并且开启了Multiple Pipelines时,将根据该高级配置项中的内容生成pipelines.yml。
因为pipelines.yml中是以列表的方式来定义不同的pipeline,其中的配置名称存在重复,在使用高级配置项进行配置时,无法准确的划分某一配置属于哪个pipeline,因此,需要在原配置之前添加一个前缀,不同的pipeline使用不同的前缀,属于一个pipeline的配置使用相同的前缀,此处,我们建议使用pipeline的id作为前缀,比如,下面定义两个pipeline,test和test02:
- log4j2.properties
该配置文件通过CM上的日志配置以及parcel中默认的log4j2.properties文件合并生成。
CM上关于日志的配置有以下五项:
- 合并规则:
读取parcel中log4j2.properties配置文件的所有配置项,添加或者更新用户在高级配置项中配置的日志配置项,最后根据上图中Logstash Log Directory、Logstash Logging Threshold、Logstash Max Log Size、Logstash Maximum Log File Backups更新如下几个配置项:
appender.rolling.layout.pattern
appender.rolling.fileName
appender.rolling.filePattern
appender.rolling.policies.size.size
appender.rolling.strategy.max
言外之意,如果要修改parcel中log4j2.propeties文件里已经定义的配置,那么在高级配置里重新定义即可,如果要新增一些配置,也是在高级配置项里添加,但上述几项配置即使在高级配置项中配置了,也会被覆盖,是无法生效的,需通过上图中后四个配置项进行配置。
另外,为了避免日志打印到stderr和stdout, rootLogger.appenderRef.console.ref和logger.slowlog.appenderRef.console_slowlog.ref将不会添加到log4j2.properties中,用户在自定义logger的时候,也不可定义输出到console的logger。
- 其他配置
Logstash include plugin_paths:添加插件
Logstash include local config:可自动拷贝用户自定义的一些配置文件到进程启动时的config目录下,可配置多个。当配置的是文件路径地址时,该文件将直接拷贝到config目录下;当配置的是一个目录时,将把内部所有文件根据原目录的相对层级拷贝到config目录下。