---
title: Kubernetesハンズオン - 4. アプリケーションのログ
tags: ["Kubernetes Handson", "Kubernetes", "PKS"]
categories: ["Dev", "CaaS", "Kubernetes"]
date: 2019-09-02T01:23:21Z
updated: 1970-01-01T00:00:00Z
---

アプリケーションのログは標準出力に書き込むことで、Pod経由で確認できます。

**目次**

<!-- toc -->

### kubectl logsコマンド

`kubectl logs <Pod名>`でPodのログを見ることができます。

> Podに複数のContainerが存在する場合は`kubectl logs <Pod名> -c <Container名>`でContainerも指定します。

まずは`hello-pks`アプリケーションのPod名を確認するため、次のコマンドを実行してください。

```
kubectl get pod -l app=hello-pks
```
出力結果
```
NAME                         READY   STATUS    RESTARTS   AGE
hello-pks-795466b574-twc5v   1/1     Running   0          7s
hello-pks-795466b574-xs887   1/1     Running   0          7s
```

次のコマンドを実行してPodのログを確認してください。

```
kubectl logs hello-pks-795466b574-twc5v
```
出力結果
```
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.1.RELEASE)

2019-09-02 01:16:17.848  INFO 1 --- [           main] c.example.hellopks.HelloPksApplication   : Starting HelloPksApplication v0.0.1 on hello-pks-795466b574-twc5v with PID 1 (/app.jar started by root in /)
... (略) ...
2019-09-02 01:16:22.311  INFO 1 --- [           main] r.ipc.netty.tcp.BlockingNettyContext     : Started HttpServer on /0.0.0.0:8080
2019-09-02 01:16:22.327  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8080
2019-09-02 01:16:22.333  INFO 1 --- [           main] c.example.hellopks.HelloPksApplication   : Started HelloPksApplication in 5.253 seconds (JVM running for 6.141)
```

`-f`オプションをつけると、コマンド実行時以降のログも出力されます。


```
kubectl logs -f hello-pks-795466b574-twc5v
```

### sternコマンド

`kubectl logs`コマンドはPodを一つ一つ指定する必要があるため、Podが複数ある場合に集約するのが大変です。
複数のPodのログを集約して確認するのに便利なツールが[Stern](https://github.com/wercker/stern)です。
`stern`コマンドを使うと、Pod名の正規表現を指定することで、条件に合致した複数のPodのログをまとめて確認することできます。

Mac(brew)の場合は
```
brew install stern
```
でインストールできます。あるいは[こちら](https://github.com/wercker/stern/releases)から実行可能バイナリをダウンロードして、`PATH`の通ったディレクトリにコピーしてください。

次のコマンドを実行してください。

```
stern hello-pks
```
出力結果
```
+ hello-pks-795466b574-xs887 › hello-pks
+ hello-pks-795466b574-twc5v › hello-pks
hello-pks-795466b574-twc5v hello-pks 
hello-pks-795466b574-twc5v hello-pks   .   ____          _            __ _ _
hello-pks-795466b574-twc5v hello-pks  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
hello-pks-795466b574-twc5v hello-pks ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
hello-pks-795466b574-twc5v hello-pks  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
hello-pks-795466b574-twc5v hello-pks   '  |____| .__|_| |_|_| |_\__, | / / / /
hello-pks-795466b574-twc5v hello-pks  =========|_|==============|___/=/_/_/_/
hello-pks-795466b574-twc5v hello-pks  :: Spring Boot ::        (v2.0.1.RELEASE)
hello-pks-795466b574-twc5v hello-pks 
hello-pks-795466b574-twc5v hello-pks 2019-09-02 01:16:17.848  INFO 1 --- [           main] c.example.hellopks.HelloPksApplication   : Starting HelloPksApplication v0.0.1 on hello-pks-795466b574-twc5v with PID 1 (/app.jar started by root in /)
hello-pks-795466b574-twc5v hello-pks 2019-09-02 01:16:17.862  INFO 1 --- [           main] c.example.hellopks.HelloPksApplication   : No active profile set, falling back to default profiles: default
... (略) ...
hello-pks-795466b574-twc5v hello-pks 2019-09-02 01:16:22.311  INFO 1 --- [           main] r.ipc.netty.tcp.BlockingNettyContext     : Started HttpServer on /0.0.0.0:8080
hello-pks-795466b574-twc5v hello-pks 2019-09-02 01:16:22.327  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8080
hello-pks-795466b574-twc5v hello-pks 2019-09-02 01:16:22.333  INFO 1 --- [           main] c.example.hellopks.HelloPksApplication   : Started HelloPksApplication in 5.253 seconds (JVM running for 6.141)
hello-pks-795466b574-xs887 hello-pks 
hello-pks-795466b574-xs887 hello-pks   .   ____          _            __ _ _
hello-pks-795466b574-xs887 hello-pks  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
hello-pks-795466b574-xs887 hello-pks ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
hello-pks-795466b574-xs887 hello-pks  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
hello-pks-795466b574-xs887 hello-pks   '  |____| .__|_| |_|_| |_\__, | / / / /
hello-pks-795466b574-xs887 hello-pks  =========|_|==============|___/=/_/_/_/
hello-pks-795466b574-xs887 hello-pks  :: Spring Boot ::        (v2.0.1.RELEASE)
hello-pks-795466b574-xs887 hello-pks 
hello-pks-795466b574-xs887 hello-pks 2019-09-02 01:16:17.672  INFO 1 --- [           main] c.example.hellopks.HelloPksApplication   : Starting HelloPksApplication v0.0.1 on hello-pks-795466b574-xs887 with PID 1 (/app.jar started by root in /)
... (略) ...
hello-pks-795466b574-xs887 hello-pks 2019-09-02 01:16:22.157  INFO 1 --- [ctor-http-nio-1] r.ipc.netty.tcp.BlockingNettyContext     : Started HttpServer on /0.0.0.0:8080
hello-pks-795466b574-xs887 hello-pks 2019-09-02 01:16:22.164  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8080
hello-pks-795466b574-xs887 hello-pks 2019-09-02 01:16:22.169  INFO 1 --- [           main] c.example.hellopks.HelloPksApplication   : Started HelloPksApplication in 5.231 seconds (JVM running for 6.019)
```

コンソール上のログにはPodごとに異なる色が使われます。
![image](https://user-images.githubusercontent.com/106908/40017494-83eaae98-57f4-11e8-95eb-2819f0c97d5d.png)


### ログの転送

`LongSink`について。

https://docs.pivotal.io/pks/1-5/create-sinks.html

TBD
