2014年10月3日金曜日

Splunkの更新を 自作リポジトリ(yum,apt) で楽する方法! #splunk


ども!なのまるです!

「Splunk 6.1.4」出ましたね!

さすがに世にいるエンジニアの方は、効率化して複数サーバー展開されていることと思います!

僕も僕なりの解決方法を作ったので、これもひとつの例だと思ってやり方を公開して残しておきます!


もくじ



そもそもなんで、これやるの??

Splunkは基本的にメーカーのダウンロードページからバイナリをダウンロードしてきて、サーバーに展開するしかありません!

でも、1度ダウンロードすれば展開しても問題ないと「チラッと」聞いたので、展開するために自作のパッケージリポジトリを作成しました!

全体像

以前作ったスライドに、全体像があるので掲示しておきます!

前提条件


yumの場合

  • RHEL系のLinux OS
  • createrepo パッケージ
  • python-hashlib パッケージ(RHEL5系の場合)

aptの場合

  • Debian系のOS
  • apt-utils パッケージ

作業の流れ

  • Splunkからバイナリをダウンロード(本体とUniversal Forwarder)・確認
  • ファイルの配置
  • httpdの設定
  • yumリポジトリの作成
  • repoファイル作成
  • aptリポジトリの作成
  • apt sourcelistファイルの作成
  • 更新

Splunkからバイナリをダウンロード(本体Universal Forwarder)・確認

Download Splunk Enterprise for free より、
をダウンロード!

MD5のチェックサムを忘れずに!


ファイルの配置

ディレクトリ構成例
/opt/splunk-repo/
├── bin (shellを格納する)
├── deb (debパッケージ置場)
├── i386 (32bit版の置き場)
├── repofile (apt,yum repoファイル置場)
└── x86_64 (64bit版の置き場)
上記構成で組む前提で進めます。

フォルダ作成
mkdir -p /opt/splunk-repo/{bin,deb,i386,repofile,x86_64}
そして、それぞれの環境ごとフォルダににファイルを配置します。(これが面倒なんですが、あとからいい感じに効いてくるので頑張りますw)

httpdの設定

リポジトリ公開に、httpdを使うので何でもいいのでhttpdを設定します!(Apache,nginx)
とりあえず使い慣れたApacheで(2.4の場合)
 #
 # for Splunk Forwarder
 # なのまる Original repository
 #
 Alias /splunk-repo /opt/splunk-repo
 
 <Directory "/opt/splunk-repo">
     Options Indexes
     AllowOverride None
 # for Under 2.2
 #    Order allow,deny
 #    Allow from all
 
 # for Over 2.4
     Require all granted
 </Directory>


yumリポジトリの作成(RedHat系のサーバーで)

コマンド忘れそうなので、単純にシェルスクリプトに入れました。
 #!/bin/bash
 
 sudo createrepo --database /opt/splunk-repo/x86_64
 sudo createrepo --database /opt/splunk-repo/i386


repoファイル作成

「splunk.repo」などとして「/etc/yum.repos.d」に配置します!
[splunk-uf]
name=Splunk Universal Forwarder
baseurl=http://[サーバーのIP]/splunk-repo/$basearch/
gpgcheck=0
enabled=0

ここは、環境に応じて変更してください!
baseurl=http://[サーバーのIP]/splunk-repo/$basearch/


aptリポジトリの作成(Debian系のサーバーで)

こちらも、単純にシェルスクリプトに入れました。
 #!/bin/bash
 
 cd /opt/splunk-repo/deb
 sudo apt-ftparchive packages . | gzip > Packages.gz

今回署名は入れてないです。。。

apt sourcelistファイルの作成

「splunk.list」などとして「/etc/apt/sources.list.d」に配置します!
deb http://[サーバーのIP]]/splunk-repo/deb ./


更新

早速更新です!
yumだけ、オプションつけないとUpdate出来ない仕組みになっています!

「splunk.repo」の以下を「1」にすれば自動でアップデート適用出来ます。
enabled=0


yumの時
Splunk 本体
sudo yum update --enablerepo=splunk-uf splunk

Splunk Universal Forwarder
sudo yum update --enablerepo=splunk-uf splunkforwarder


aptの時
Splunk 本体
sudo apt-get update && sudo apt-get upgrade splunk

Splunk Universal Forwarder
sudo apt-get update && sudo apt-get upgrade splunkforwarder

起動確認

Splunk 本体
sudo /opt/splunk/bin/splunk start --answer-yes --no-prompt --accept-license

Splunk Universal Forwarder
sudo /opt/splunkforwarder/bin/splunk start --answer-yes --no-prompt --accept-license


展開

各サーバーへの展開ですが、
capistrano
や、Jenkinsでシェルスクリプト作って実行させたりしまーす!

トラブルシューティング

トラブルが起きたら、大抵の場合この手順だと
repo作るコマンドのパッケージが足りない

httpdの設定がおかしい
だと思うので、そのあたりを確認してみてください~

まとめ


  • この手順で、結構頻繁に更新されるSplunkアップデートに追随できるようになりました!
  • 複数ディストリビューション・複数arch(i386,x86_64)に対応できるようになりました!
  • 以前からブログに書く!って言っててやっと書けました!


結局独りよがりだったのかも~?

参考サイト



共有