作者:李继武

文档编写目的




本文档主要介绍如何在CM中添加ELK服务,及配置说明。

  • 内容概述

1.部署Parcel

2.添加CSD

3.添加服务

4.配置说明

  • 测试环境

1.Redhat7.2

2.CM5.16.2


部署Parcel




1.将elk添加到httpd服务目录下

5.16.2-如何在CDH中安装ElasticSearch_elasticsearch

5.16.2-如何在CDH中安装ElasticSearch_配置文件_02


2.将地址添加到CM的parcel配置中

5.16.2-如何在CDH中安装ElasticSearch_elasticsearch_03


3.下载分发parcel

5.16.2-如何在CDH中安装ElasticSearch_配置项_04

5.16.2-如何在CDH中安装ElasticSearch_elasticsearch_05

5.16.2-如何在CDH中安装ElasticSearch_配置项_06


4.激活

5.16.2-如何在CDH中安装ElasticSearch_配置文件_07


添加CSD




1.将csd文件ELK-YX-20200617-1.0-SNAPSHOT.jar放置在cloudera-scm-server服务的csd目录下

5.16.2-如何在CDH中安装ElasticSearch_配置文件_08


2.重启cloudera-scm-server服务

3.cloudera-scm-server服务重启后,登录管理界面,重启Cloudera Management Service


添加服务




1.添加服务

5.16.2-如何在CDH中安装ElasticSearch_配置项_09


2.添加实例

Elasticsearch角色实例至少有一个,Kibana和Logstash角色实例可选择性配置

5.16.2-如何在CDH中安装ElasticSearch_配置文件_10


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服务端口


5.16.2-如何在CDH中安装ElasticSearch_elasticsearch_11

5.16.2-如何在CDH中安装ElasticSearch_配置项_12


4.第一次启动时,elasticsearch将会启动失败,需要修改系统的[vm.max_map_count]以及 [max file descriptors] ,可点击左上角图标回到主页。


vm.max_map_count: 

在每一台主机上修改/etc/sysctl.conf文件,添加vm.max_map_count=262144

5.16.2-如何在CDH中安装ElasticSearch_elasticsearch_13


max file descriptors:

该配置需在CM上配置,打开配置,找到Maximum Process File Descriptors,将elasticesearch角色相关的角色组设置为655350。

5.16.2-如何在CDH中安装ElasticSearch_elasticsearch_14

重启服务即可。


配置说明




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

5.16.2-如何在CDH中安装ElasticSearch_配置项_15


  • log4j2.properties

该配置文件通过CM上的日志配置以及parcel中默认的log4j2.properties文件合并生成。


CM上关于日志的配置有以下五项:

5.16.2-如何在CDH中安装ElasticSearch_配置项_16

5.16.2-如何在CDH中安装ElasticSearch_elasticsearch_17


合并规则:

读取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。

5.16.2-如何在CDH中安装ElasticSearch_配置项_18


  • 日志配置

日志的配置主要通过以下五项来进行配置:

5.16.2-如何在CDH中安装ElasticSearch_配置文件_19

5.16.2-如何在CDH中安装ElasticSearch_配置项_20


根据以上前四项,将会在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

5.16.2-如何在CDH中安装ElasticSearch_配置项_21


当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:

5.16.2-如何在CDH中安装ElasticSearch_elasticsearch_22



  • log4j2.properties

该配置文件通过CM上的日志配置以及parcel中默认的log4j2.properties文件合并生成。


CM上关于日志的配置有以下五项:

5.16.2-如何在CDH中安装ElasticSearch_配置项_23

5.16.2-如何在CDH中安装ElasticSearch_配置文件_24


  • 合并规则:

读取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目录下。