Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101...

79
Monitor Your Containers with the Stack Philipp Krenn@xeraa

Transcript of Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101...

Page 1: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Monitor Your Containerswith the Stack

Philipp Krenn@xeraa

Page 2: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Infrastructure | Developer Advocate

Page 3: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 4: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 5: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

$ curl http://localhost:9200{ "name": "zDODSc4", "cluster_name": "docker-cluster", "cluster_uuid": "qbx3DVATRfWOgHB6uiLtNw", "version": { "number": "6.3.0", "build_flavor": "default", "build_type": "tar", "build_hash": "424e937", "build_date": "2018-06-11T23:38:03.357887Z", "build_snapshot": false, "lucene_version": "7.3.1", "minimum_wire_compatibility_version": "5.6.0", "minimum_index_compatibility_version": "5.0.0" }, "tagline": "You Know, for Search"}

Page 6: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 7: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 8: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 9: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 10: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 11: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 12: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 13: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 14: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 15: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Filebeat

Page 16: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

tail -f

Page 17: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

tail -fover the network

Page 18: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

tail -fover the network

on

!

Page 19: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Parse & EnrichLogstash or Ingest-Node

Page 20: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

34.253.145.46 - - [06/Sep/2017:22:33:30 +0000] "GET /server-status HTTP/1.1" 200 97 "-" "Go-http-client/1.1" "-"

"remote_ip": "34.253.145.46","method": "GET","url": "/server-status","http_version": "1.1","response_code": 200,

Page 21: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

"remote_ip": "34.253.145.46"

"geoip": { "continent_name": "North America", "city_name": "Houston", "country_iso_code": "US", "region_name": "Texas", "location": { "lon": -95.5858, "lat": 29.6997 }}

Page 22: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

At-Least-OnceBackpressure

Graceful Downtime

Page 23: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 24: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 25: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 26: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Filteringinclude_linesexclude_linesexclude_files

filebeat.prospectors:- input_type: log paths: - /var/log/myapp/*.log include_lines: ["^ERR", "^WARN"]

Page 27: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

MultilineException in thread "main" java.lang.IllegalStateException: A book has a null property at com.example.myproject.Author.getBookIds(Author.java:38) at com.example.myproject.Bootstrap.main(Bootstrap.java:14)Caused by: java.lang.NullPointerException at com.example.myproject.Book.getId(Book.java:22) at com.example.myproject.Author.getBookIds(Author.java:35) ... 1 more

multiline.pattern: '^[[:space:]]+|^Caused by:'multiline.negate: falsemultiline.match: after

Page 28: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

JSON Decode

Page 29: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Filebeat ModulesApache2, Auditd, Icinga, IIS, Kafka, Logstash, MongoDB, MySQL, Nginx,

Osquery, PostgreSQL, Redis, System, Traefik

Page 30: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Logging with Docker101 options

Page 31: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

https://docs.docker.com/engine/admin/logging/overview/

Page 32: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

001 JSON-FileFilebeat for JSON

Simple, default, well integratedMetadata (name, labels,...)

docker logs

Potentially slowBy default unlimited file size

Page 33: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

010 SyslogLocal Syslog server and Filebeat

Configurable path, rotation,...➖

Custom Syslog serverMetadaten serialized and deserialized

Multiline

Page 34: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

011 JournaldFilebeat

Widely availableMetadatadocker logs

Not yet supported by Filebeat (Community Beat: Journalbeat)

Page 35: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

100 GELFLogstash-GELF-Input

Direct Logstash connection➖

UDP — no ACK, no backpressure

Page 36: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

101 VolumeFilebeat

Simple installation (if app rotates logs)Scalable

Metadata

Page 37: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

!

Today: JSON, Syslog, VolumeFuture: Journald

Page 38: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Docker Metadata- input_type: log paths: - /var/lib/docker/containers/*/*-json.log document_type: docker json.message_key: log processors: - add_docker_metadata: ~

Page 39: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Kubernetes Metadataprocessors: - add_kubernetes_metadata: in_cluster: true

Page 40: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Metricbeat

Page 41: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Metricbeat System

Page 43: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Read cgroup data from/proc/

Page 44: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Part of the system module

Page 45: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

No Docker API access requiredSecurity

Page 46: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

All containersDocker, rkt, runC, LXD,...

Page 47: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Enriches process information automatically with cgroup data

Page 48: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

No container names or labels

Page 49: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

But Docker...

Page 50: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 51: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Dockerbeathttps://github.com/Ingensi/dockerbeat

Page 52: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Dockerbeathttps://github.com/Ingensi/dockerbeat

Page 53: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Dockbeathttps://github.com/Ingensi/dockbeat

Page 54: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Metricbeat 5.1+

Page 55: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

System Permissions$ docker run \ --volume=/proc:/hostfs/proc:ro \ --volume=/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro \ --volume=/:/hostfs:ro \ --net=host docker.elastic.co/beats/metricbeat:6.3.0 -system.hostfs=/hostfs

Page 56: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Service Permissions$ docker run \ --link some-mysql:mysql \ -e MYSQL_PASSWORD=secret \ docker.elastic.co/beats/metricbeat:6.3.0

Page 57: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Metricbeat and Docker

Page 58: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Docker Metadataprocessors: - add_docker_metadata: ~

Page 59: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Kubernetes Metadataprocessors: - add_kubernetes_metadata: in_cluster: true

Page 60: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Kubernetes Metrics- module: kubelet metricsets: ["node", "container", "volume", "pod", "system"] hosts: ["localhost:10255"]

Page 61: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 62: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Packetbeat

Page 63: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Protocols

Page 64: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

FlowsApplication layer: Unsupported or encrypted protocols

IP / TCP / UDP

Number of packets & bytes

Retransmissions

Temporal flow

Page 65: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Packetbeat and Docker

Page 66: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Auditbeat

Page 67: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Linux KernelFile Integrity

Page 68: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Heartbeat

Page 69: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Winlogbeat

Page 70: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 71: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

https://github.com/elastic/elasticsearch-docker

https://github.com/elastic/kibana-docker

https://github.com/elastic/logstash-docker

https://github.com/elastic/beats-docker

Page 72: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

---version: '2'services: kibana: image: docker.elastic.co/kibana/kibana:6.3.0 links: - elasticsearch ports: - 5601:5601

elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.3.0 volumes: - esdata:/usr/share/elasticsearch/data ports: - 9200:9200

volumes: esdata: driver: local

Page 73: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 74: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Demohttps://github.com/xeraa/elastic-docker/

tree/master/full_stackElasticsearch, Kibana, Filebeat, Heartbeat, Metricbeat,

Packetbeat, nginx, MySQL

Page 75: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 76: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Conclusion

Page 77: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 78: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part
Page 79: Monitor Your Containers · Osquery, PostgreSQL, Redis, System, Traefik. Logging with Docker 101 options. ... 101 Volume Filebeat ... modules.html. Read cgroup data from /proc/ Part

Questions?Philipp Krenn@xeraa

PS: Sticker