konchangakita

KPSを一番楽しんでいたブログ 会社の看板を背負いません 転載はご自由にどうぞ

Splunk を Kubernetes と Karbon Platform Service で動かしてみる

f:id:konchangakita:20201005201155p:plain

KPS IoT(旧Xi IoT)では、センサーデータの処理結果を Kafka などでメッセージを飛ばすことができます
(もちろんデータパイプラインの中で定義している Function[Python/go/node]から httpリクエストしてもOK)
これまで KPS上で Elasticsearch をちょっとした DB 代わりに使って可視化やオブジェクト処理と連携させてきましたが、Elasticsearch と同じノリで Splunk 触ってみようと思います

【Splunk やってみたシリーズ】
・Splunk を Kubernetes と Karbon Platform Service で動かしてみる ←今ココ
Splunkで syslog 受信してみる CentOS編
Splunk で システムログを受信してみる Windows編
Splunk で Nutanix と Files のシスログ受け取ってみる
Splunk で Nutanix Flowログ確認


はじめてのSplunk

スペランカー(無謀な洞窟探検者)が会社名の語源になってるらしいです(最弱って意味じゃないですよ)
Splunk は、あらゆるログ、データを取得して可視化・分析していくので、そのデータにはまだ「見ぬお宝が眠っているぞ」って感じでしょうか

まだまともに使ってないですが、syslogサーバの代わりに使ったり、オブジェクトストレージと連携したりできるのかなー、なんて妄想しています

一日500MBまでであればフリートライアル版が用意されているので、とにかくタダでさわってみたいにはよさそう
www.splunk.com


Splunk を Kubernetes 上で動かしてみる

普通はベアメタルサーバにインストールするそうで、最近仮想化上というのも珍しくなくなってきたそうです
Splunkまったく初心者ですが、PCでもVMでもなくいきなり K8s上にたててみたい
だって自分のPC環境が汚れていくのが嫌だから。。。そして K8s 動かせれば、そのまま KPS IoT でも使えるから!
いつものように、まずはDockerhubでコンテナイメージを探してみます
もう新しいアプリに出会えば、まず Dockerhub でコンテナイメージをググる癖がついてきました

というわけで、Splunk も公式 Dockerコンテナイメージ用意されているようです
splunk.github.io

dockerコンテナが公式で提供されていれば、きっとK8s上でも動くはず

Docker用に用意されているドキュメント参考に kubernetes 上で動くように試していきます
Welcome to the Docker-Splunk documentation! | docker-splunk


Standalone deployment の項目を参考にしてみます
https://splunk.github.io/docker-splunk/SETUP.html#standalone-deployment

超シンプルに作るとこんな感じになりました

apiVersion: v1
kind: Service
metadata:
  name: splunk-app
spec:
  selector:
    app: splunk-app
  ports:
  - name: web-ui
    port: 8000
  - name: manage-port
    port: 8089
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: splunk-app
spec:
  serviceName: splunk-app
  selector:
    matchLabels:
      app: splunk-app
  replicas: 1
  template:
    metadata:
      name: splunk-app
      labels:
        app: splunk-app
    spec:
      terminationGracePeriodSeconds: 30
      containers:
      - name: splunk
        image: splunk/splunk
        ports:
        - containerPort: 8000
        env:
        - name: SPLUNK_START_ARGS
          value: "--accept-license"
        - name: SPLUNK_PASSWORD
          value: "password"

PVC(ストレージ)とか環境変数とか余計なものをつけるとpodが起動しなかったので、シンプルに作ったら動きました
f:id:konchangakita:20201005193128p:plain

あとは、外部から Service にアクセスできるようにフォワードしてやれば

kubectl port-forward service/splunk-app 8000

http://localhost:8000/ でサクッとつながりました(ユーザー名は admin)
f:id:konchangakita:20201005194550p:plain
f:id:konchangakita:20200905123516p:plain


Kubernetes 上で動けば、KPS IoTでも動く

おなじみ socat をつけてやれば、完成


f:id:konchangakita:20201005195450p:plain
f:id:konchangakita:20201005195500p:plain
socat で指定したポート :18000 でアクセス
f:id:konchangakita:20201005195650p:plain

きっと Splunk はこんなミニマムな使い方はしないんでしょうけど、KPSの1エッジOS上で全部動くのは PoC としては、超楽ちんですね

さぁ、データを取り込もう