Filebeat
API Gateway uses Filebeat to monitor the log files and forwards them to either API Data Store or external ElasticSearch. Filebeat is shipped along with API Gateway and its configuration can be found in the following location:
SAG_Install_Dir/profiles/IS_Instance_Name/apigateway/filebeat/filebeat_apigateway.yml
When log aggregation is enabled, API Gateway initiates the Filebeat process in the background to monitor the log files and forwards the log files to either API Data Store or external Elasticsearch.
API Gateway + API Data Store + Terracotta Server
In case, if you also want to aggregate Terracotta server logs that are stored in different location, perform the following steps:
If Terracotta Server and API Gateway is installed in the same machine, perform the following steps:
- In the
Administration >
General > Application
logs >
Log aggregation section, disable the log
aggregation.
Note: By default, the Terracotta logs are available in the (user.home)/terracotta/server-logs location. You can change this folder by specifying the custom log data location in the tc-config.xml.
- Update the
filebeat_template.yml file in the
SAG_Install_Dir\profiles\IS_Instance_Name\apigateway\filebeat
location with the following content. Make sure you place the following content
below the
DashboardLogs configuration:
- type: log # Change to true to enable this prospector configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - C:/Users/alice/terracotta/server-logs/terracotta-server.log fields: node: ${NODE} fileType: TerracottaServerLogs timezone: ${TIMEZONE} fields_under_root: true multiline.pattern: (([\s]+)20[0-9]{2}-)|20[0-9]{2}- multiline.negate: true multiline.match: after
- In the Administration > General > Application logs > Log aggregation section, enable log aggregation.
- In the Analytics > Application Logs section, check whether the Terracotta Server logs are aggregated.
If Terracotta Server and API Gateway are installed in different machine, perform the following steps:
- Edit the
tc-config.xml in Terracotta Server with the
following content to store the logs in a network location and start the
Terracotta Server:
<?xml version="1.0" encoding="UTF-8"?> <tc:tc-config xmlns:tc="http://www.terracotta.org/config"> <servers> <server host="localhost" name="%h"> <data>C:/install/TerraCottaServer/Terracotta/server/bin/data</data> <logs>//worstation01/share/tcserverlog</logs> <offheap> <enabled>true</enabled> <maxDataSize>512m</maxDataSize> </offheap> </server> <restartable enabled="true"/> </servers> </tc:tc-config>
- In the Administration > General > Application logs > Log aggregation section, disable log aggregation.
- Update the
filebeat_template.yml file in the
SAG_Install_Dir\profiles\IS_Instance_Name\apigateway\filebeat
location with the following content. Make sure you place the following content
below the
DashboardLogs configuration:
- type: log # Change to true to enable this prospector configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - //mckmut02/share/tc-server-logs/terracotta-server.log fields: node: ${NODE} fileType: TerracottaServerLogs timezone: ${TIMEZONE} fields_under_root: true multiline.pattern: (([\s]+)20[0-9]{2}-)|20[0-9]{2}- multiline.negate: true multiline.match: after
- In the Administration > General > Application logs > Log aggregation section, enable the log aggregation.
- In the Analytics > Application Logs section, check whether the Terracotta Server logs are aggregated.
Configuring Log for Elasticsearch Client in API Gateway
API Gateway uses Elasticsearch REST client to connect to API Data Store or External Elasticsearch. By Default, the logs that are created by these REST clients are ignored to avoid over logging. To troubleshoot or diagnose elasticsearch calls from API Gateway, you can manually configure the log configuration for Elasticsearch REST client using the following steps:
- Open the log4j2.properties located at SAG_Install_Dir\profiles\IS_Instance_Name\configuration\logging.
- Add the following configuration at the end of the file:
logger.10.name=org.elasticsearch.client logger.10.additivity=false logger.10.level=info logger.10.appenderRef.lar.ref=ESRestClient logger.11.name=org.apache.http logger.11.additivity=false logger.11.level=info logger.11.appenderRef.lar.ref=ESRestClient logger.12.name=org.apache.http.wire logger.12.additivity=false logger.12.level=info logger.12.appenderRef.lar.ref=ESRestClient logger.13.name=org.apache.http.impl.conn logger.13.additivity=false logger.13.level=info logger.13.appenderRef.lar.ref=ESRestClient appender.esrestclient.name=ESRestClient appender.esrestclient.type=RollingFile appender.esrestclient.fileName=<INSTALL_LOCATION>/IntegrationServer/instances/default/logs/ESRestClient.log appender.esrestclient.filePattern=<INSTALL_LOCATION>/IntegrationServer/instances/default/logsESRestClient.log.%i appender.esrestclient.layout.type=PatternLayout appender.esrestclient.layout.pattern=%d [%t] %-5p %c %x - %m%n appender.esrestclient.policies.type=Policies appender.esrestclient.policies.size.type=SizeBasedTriggeringPolicy appender.esrestclient.policies.size.size=10MB appender.esrestclient.strategy.type=DefaultRolloverStrategy appender.esrestclient.strategy.max=10 #This is a custom Platform provided filter which matches all log messages that contain OSGi data in MDC (bundle.id, component.name, etc.) appender.esrestclient.filter.osgi.type=LogServiceFilter appender.esrestclient.filter.osgi.onMatch=DENY appender.esrestclient.filter.osgi.onMismatch=NEUTRAL
- Restart API Gateway.
You can see the ESRestClient.log at the SAG_Install_Dir\IntegrationServer\instances\instance_name\logs location. You can see the request sent to particular elasticsearch node and what is the response status code in the ESRestClient.log