背景
背景①
プロジェクトにて、EKSを活用したアプリケーション構築を経験しており、ログ収集・監視ツールとしてDynatraceを使っている。
Dynatraceではコンソール上からPodのログをWeb GUIベースで確認ができるが、正直無料でどこまでログ可視化を実施することができるのかがわかっていない。
Dynatraceと比較して、無料であれば出来ること・出来ないことなどをまとめていきたい。
背景②
個人開発の一環で勉強としてEKSを使って構築しているが、アプリケーションログの見方が「kubectl logs」のコマンドだけであり、文言やステータスベースでのフィルタリングが出来ずに困っている。
実装
loki-stackをデプロイする
kubectl create ns monitoring
helm install -n monitoring grafana/loki-stack --generate-name --set grafana.enabled=true
以下が表示される
kubectl get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
loki-stack-1742550019 ClusterIP IPアドレス <none> 3100/TCP 30s
loki-stack-1742550019-grafana ClusterIP IPアドレス <none> 80/TCP 30s
loki-stack-1742550019-headless ClusterIP None <none> 3100/TCP 30s
loki-stack-1742550019-memberlist ClusterIP None <none> 7946/TCP 30s
LoadBalancerやClusterIPでの指定も可能だが、今回は無料で実施したかったため、NodePortを利用した実装に変更
※以下コマンドを実行し、typeをClusterIP→NodePortへ変更
kubectl edit svc -n monitoring loki-stack-1742550019-grafana
Dynatraceでしか出来ないこと・Grafanaでも出来ること
単純に触ってみての感想を書こうと思います。
Podログの収集、フィルタリング
どちらでも出来ると感じました。
特にフィルタリングに関してはデフォルトでNamespaceやContainer単位でのログ収集が可能で、初期設定でこれらが実装されるのはとても分かりやすいなと感じました。
ステータスレベルでのフィルタリング
知識不足の可能性はありますが、Dynatraceでしかできないと感じました。
Dynatraceではステータスレベルでフィルタリングが可能で、このフィルタリング設定があればなおGrafanaでも分かりやすくなるだろうなと感じました。
しかしGrafana側では、ログのテキスト部分一致が可能のため「Error」が入っているログのみ収集が可能です。この機能によってステータスレベルでのフィルタリングに近づけそうだなと感じました。
過去のpodのログ収集
DynatraceはエージェントをデプロイしてSaaSへログを転送している一方、LokiはEKS Nodeの/var/logフォルダにあるPodログを直接見に行っているため、Nodeのライフサイクルにより過去のPodログは見ることができないと考えました。
実施してみて
今回初めてGrafanaを自分でデプロイしたため、まだ機能を完全に使いこなせていないだろうなと感じました。
次回はChatGPTやAWS Bedrockなどと組み合わせてAI Opsなども経験してみたいと考えました