CoreOS의 모든 로그를 원격 서버로 보냅니다.

개요



CoreOS에서 나오는 모든 로그를 원격 로그 서버로 보냅니다.
CoreOS에는 systemd가 들어 있으며 모든 서비스를 systemd를 통해 관리하면 systemd와 함께 제공된 jounalctl을 통해 로그를 중앙에서 관리 할 수 ​​있습니다. CoreOS 시스템을 사용 가능하게 유지하기 위해 중앙 집중식 로그를 원격 서버로 보냅니다.

로그 라우팅



수집한 로그는 ncat 의 커넥트 모드를 사용해 로그 보존처의 listen 포트에 UDP 데이터로서 송신한다.
$ journalctl -o short -f | ncat remote-destination.com 12345

로그의 라우팅 목적지는 다양하다.
  • Papertrail
  • Logentries
  • Loggly
  • Datadog
  • Splunk

  • Fluentd (OSS)

  • Logstash (OSS)

  • Graylog2 (OSS)

  • Logentries로 라우팅하는 예



    Logentries 는 고유 포트에의 Plain TCP, UDP 경유로 송신하면, 소스 IP 로 판별하므로, CoreOS 머신을 버릴 수 없게 된다. Logentries에 대한 Token 기반으로 보내기
    core@core-01 ~ $ journalctl -o short -f | sed \"s/^/<YOUR_TOKEN> \\0/g\" | ncat data.logentries.com 10000"
    

    json 형식으로 보내기
    core@core-01 ~ $ journalctl -o json -f | sed \"s/^/<YOUR_TOKEN> \\0/g\" | ncat data.logentries.com 10000"
    

    Cloud-Config로 시작


    #cloud-config
    
    coreos:
      update:
        group: stable
      etcd:
        discovery: https://discovery.etcd.io/xxxxxxxxxxxxxxxxxxx
        addr: $public_ipv4:4001
        peer-addr: $public_ipv4:7001
      fleet:
        public-ip: $public_ipv4
      units:
        - name: journal-router-short.service
          command: start
          content: |
            [Unit]
            Description=Journal Router (short)
    
            [Service]
            TimeoutStartSec=0
            ExecStart=/bin/sh -c '/usr/bin/journalctl -o short -f | sed \"s/^/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \\0/g\" | ncat data.logentries.com 10000'
    
            [Install]
            WantedBy=multi-user.target
        - name: journal-router-json.service
          command: start
          content: |
            [Unit]
            Description=Journal Router (json)
    
            [Service]
            TimeoutStartSec=0
            ExecStart=/bin/sh -c '/usr/bin/journalctl -o json -f | sed \"s/^/xxxxxxxxxxxxxxxxxxxxxxxxxxxx \\0/g\" | ncat data.logentries.com 10000'
    
            [Install]
            WantedBy=multi-user.target
    
  • human readable 로그로 short , 나중에 상세를 조사해, 로그를 사용해 무언가 할 때를 위해서 json 로그 모두에게 송신해 둔다

  • 보충: Logentries 설정 예













    메모와 감상



    각 컨테이너의 기동 실패등의 로그도 갖고 싶기 때문에 제일 먼저 기동하도록 쓴다



    units의 맨 위에 쓰면 좋다고 생각한다

    REF


  • CoreOS logging to remote destinations

  • CoreOS를 Logentries로 로그 모니터링 해 보았습니다 - uzyexe 노트 - 자신도 logentries 사용자이므로 저스트 기사였습니다.
  • 좋은 웹페이지 즐겨찾기