Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save s1monj/b88a3dd69db5901917ab2b4ffaffbe95 to your computer and use it in GitHub Desktop.
Save s1monj/b88a3dd69db5901917ab2b4ffaffbe95 to your computer and use it in GitHub Desktop.
Tailing JSON logs with lnav on AWS Elastic Beanstalk through eb ssh

Using Rails Semantic Logger for logging, JSON logs can be tailed on AWS Elastic Beanstalk with lnav JSON log viewer from an eb ssh command line session with this config.

# .ebextensions/lnav.config
files:
# ./logs to quick view logs from eb ssh
"/home/ec2-user/logs" :
mode: "000777"
owner: root
group: root
content: |
/home/ec2-user/lnav/lnav -i /var/app/current/lnav_log_viewer_format.json
/home/ec2-user/lnav/lnav /var/app/current/log/application_log.json
"/home/ec2-user/lnav.zip" :
mode: "000777"
owner: root
group: root
source: https://github.com/tstack/lnav/releases/download/v0.8.5/lnav-0.8.5-linux-64bit.zip
commands:
lnav_unzip:
command: command: if [ ! -d "lnav" ]; then unzip lnav.zip; rm -f lnav.zip; mv lnav* lnav; fi
cwd: /home/ec2-user/
// app_root/lnav_log_viewer_format.json
{
"json_log": {
"title": "JSON log",
"description": "Rails Semantic Logger JSON format",
"json": true,
"file-pattern": ".*\\.json$",
"timestamp-field": "timestamp",
"timestamp-format": ["%Y-%m-%dT%H:%M:%S.%fZ"],
"level-field": "level",
"value": {
"host": {
"kind": "string",
"hidden": true
},
"application": {
"kind": "string",
"hidden": true
},
"level": {
"kind": "string",
"identifier": true
},
"level_index": {
"kind": "integer",
"hidden": true
},
"pid": {
"kind": "integer",
"hidden": true
},
"thread": {
"kind": "string",
"hidden": true
},
"named_tags": {
"kind": "json"
},
"duration_ms": {
"kind": "float",
"hidden": true
},
"duration": {
"kind": "string",
"hidden": true
},
"name": {
"kind": "string"
},
"message": {
"kind": "string"
},
"payload": {
"kind": "json"
},
"file": {
"kind": "string",
"hidden": true
},
"line": {
"kind": "integer",
"hidden": true
},
"exception": {
"kind": "json"
},
"exception/message": {
"kind": "string"
},
"exception/stack_trace": {
"kind": "string"
}
},
"line-format": [
{
"field": "timestamp",
"timestamp-format": "%H:%M:%S.%f"
},
"|",
{
"field": "level"
},
"|",
{
"field": "name"
},
"|",
{
"field": "message"
},
{
"field": "exception"
},
"|",
{
"field": "named_tags"
},
"|",
{
"field": "payload"
}
],
"hide-extra": false,
"multiline": true
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment