Skip to content
This repository was archived by the owner on Sep 8, 2018. It is now read-only.

Integrations

Peter Bourgon edited this page Mar 28, 2018 · 8 revisions

For the time being, these integrations assume a separate OK Log installation running outside of the system or cluster in question.

Docker

logspout provides a quick and easy way to forward all Docker logs on a given host to an OK Log ingester.

$ docker run --volume=/var/run/docker.sock:/var/run/docker.sock \
    gliderlabs/logspout raw+tcp://ingest.mycorp.co:7651

You can use a simple Docker run command to generate some test logs.

$ docker run -d --rm ubuntu:latest sh -c 'while true; do date; sleep 1; done'

Kubernetes

logspout also works well when deployed as a DaemonSet. Here's a sample manifest that captures all cluster (system) and application (user pod) logs, and forwards them to an OK Log ingester.

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: logspout
spec:
  template:
    metadata:
      labels:
        name: logspout
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:
        - resources:
            requests:
              cpu: 0.15
          securityContext:
            privileged: true
          env:
            - name: ROUTE_URIS
              value: raw+tcp://ingest.mycorp.co:7651
          image: gliderlabs/logspout
          name: logspout
          volumeMounts:
            - name: log
              mountPath: /var/run/docker.sock
      volumes:
        - name: log
          hostPath:
              path: /var/run/docker.sock

And here is an example StatefulSet and Service definition for OK Log itself, thanks to @jcftang.

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: oklog
  labels:
    app: oklog
spec:
  replicas: 1
  serviceName: "oklog"
  selector:
    matchLabels:
      app: oklog
  template:
    metadata:
      name: oklog
      labels:
        app: oklog
    spec:
      containers:
      - name: oklog
        image: zvelo/oklog:latest
        imagePullPolicy: Always
        ports:
          - name: api
            containerPort: 7650
          - name: ingest-fast
            containerPort: 7651
          - name: ingest-durable
            containerPort: 7652
          - name: ingest-bulk
            containerPort: 7653
          - name: cluster
            containerPort: 7659
        args:
          - ingeststore
          - -store.segment-replication-factor
          - "1"
          - -store.segment-retain
          - 30m
          - -store.segment-purge
          - 5m
          - -store.path
          - /data/store
          - -ingest.path
          - /data/ingest
        volumeMounts:
          - name: oklog
            mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: oklog
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: gp2
      resources:
        requests:
          storage: 10Gi
---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: oklog
  name: oklog
spec:
  loadBalancerSourceRanges:
  - 192.168.0.1/32
  externalTrafficPolicy: Cluster
  ports:
  - name: api-80
    port: 80
    targetPort: 7650
    protocol: TCP
  - name: api-default
    port: 7650
    targetPort: 7650
    protocol: TCP
  - name: ingest-fast
    port: 7651
    targetPort: 7651
  - name: ingest-durable
    port: 7652
    targetPort: 7652
  - name: ingest-bulk
    port: 7653
    targetPort: 7653
  - name: cluster
    port: 7659
    targetPort: 7659
  selector:
    app: oklog
  sessionAffinity: None
  type: LoadBalancer

You can use counter-pod.yaml manifest to generate some test logs.

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: ubuntu:14.04
    args: [bash, -c, 
           'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done']

Also, @jhaynie has created an OK Log Helm chart.

Clone this wiki locally