URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

WindowsにZabbix Agentをインストール

 タイトル以上の意味はありませんが、いつも細かい部分を忘れてしまってなんとなく不安になってくるのでメモ。
 ついでにPowerShellの練習も兼ねて、インストール作業を自動化してみる。

 まずはWindows用のバイナリをダウンロードサイトから入手。
 インストールフォルダ(例えば"C:\Program Files\Zabbix")を作成し、ダウンロードしたZIPファイルから以下のファイルをコピーする(EXEファイルは32bit版と64bit版があるので環境に合わせて選択)。

  • zabbix_agentd.exe
  • zabbix_get.exe
  • zabbix_sender.exe
  • zabbix_agentd.conf

 エディタで"zabbix_agentd.conf"を開いて、必要な設定を記述。
 最低でも以下のパラメータは設定しておく。

ServerZabbix ServerのIPアドレス
ServerActiveZabbix ServerのIPアドレス
HostnameAgent導入サーバのホスト名
LogFileログファイルをフルパスで指定

 設定ファイルの準備ができたら、コマンドプロンプトから以下のようにオプションを付けて"zabbix_agentd.exe"を実行する。
 正しく実行されれば、Windowsサービスに"Zabbix Agent"が登録されてサービスが起動する。

> zabbix_agentd.conf -i -c ["zabbix_agentd.conf"をフルパスで指定]

 

 あとはファイアウォールの設定で"10050/TCP"を開放する。
 これでZabbix Serverから動作確認できれば完了です。

 一連の作業をザックリとスクリプトにするとこんな感じでしょうか(最近のサーバをターゲットにしているのでOSは64bitで決め打ち、"zabbix_agentd.conf"には適当に設定を追加)。

<# Zabbin Agent インストールスクリプト * 管理者権限が必要です。 * 必要に応じて事前に"Set-ExecutionPolicy RemoteSigned"を実行して下さい。 #> # ZIPファイル $SourceURL = "http://www.zabbix.com/downloads/2.4.4/zabbix_agents_2.4.4.win.zip" $TempDir = [Environment]::GetEnvironmentVariable("Temp") $DestFile = $TempDir + "\zabbix_agent.zip" # Zabbix Server $ZabbixSrv = "172.16.11.14" # インストールパス $ZabbixDir = "C:\Program Files\Zabbix" $ZabbixCfg = $ZabbixDir + "\zabbix_agentd.conf" # ダウンロード Invoke-WebRequest -Uri $SourceURL -OutFile $DestFile # ファイル配置 New-Item $ZabbixDir -ItemType Directory $ShellApp = New-Object -com Shell.Application $ZipFile = $ShellApp.NameSpace($DestFile) foreach($Item in $ZipFile.Items()) { $ShellApp.NameSpace($TempDir).Copyhere($Item) } Move-Item ($TempDir + "\bin\win64\zabbix_agentd.exe") $ZabbixDir Move-Item ($TempDir + "\bin\win64\zabbix_get.exe") $ZabbixDir Move-Item ($TempDir + "\bin\win64\zabbix_sender.exe") $ZabbixDir Move-Item ($TempDir + "\conf\zabbix_agentd.win.conf") $ZabbixCfg # 初期設定 $HostName = Get-WmiObject Win32_ComputerSystem | Select -First 1 | foreach({"{0}.{1}" -F $_.Name,$_.Domain}) $Config = Get-Content $ZabbixCfg $Config = $Config -replace "^Server=127\.0\.0\.1$",("Server=" + $ZabbixSrv) $Config = $Config -replace "^ServerActive=127\.0\.0\.1$",("ServerActive=" + $ZabbixSrv) $Config = $Config -replace "^Hostname=.*$",("Hostname=" + $HostName) $Config = $Config -replace "^# HostMetadata=.*$",("# HostMetadata=`r`nHostMetadata=Windows") $Config = $Config -replace "^# EnableRemoteCommands=.*$",("# EnableRemoteCommands=`r`nEnableRemoteCommands=1") $Config = $Config -replace "^LogFile=.*$",("LogFile=" + $ZabbixDir + "\zabbix_agentd.log") $Config | Set-Content $ZabbixCfg -Encoding ASCII # Agent インストール Start-Process -FilePath ($ZabbixDir + "\zabbix_agentd.exe") -ArgumentList "-i","-c",('"' + $ZabbixCfg + '"') -Wait # Firewall ポート開放 New-NetFirewallRule ` -Name "Zabbix Agent" ` -DisplayName "Zabbix Agent" ` -Description "for Zabbix Agent" ` -Group "Zabbix" ` -Enabled True ` -Profile Any ` -Direction Inbound ` -Action Allow ` -EdgeTraversalPolicy Block ` -LooseSourceMapping $False ` -LocalOnlyMapping $False ` -OverrideBlockRules $False ` -Program Any ` -LocalAddress Any ` -RemoteAddress Any ` -Protocol TCP ` -LocalPort 10050 ` -RemotePort Any ` -LocalUser Any ` -RemoteUser Any exit

 まっさらな環境ではうまくいったので、あとはエラーハンドリングを追加すればいいかなと。


    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

プロフィール

1020@管理人

都内を彷徨っているインフラエンジニアとかいう雑用係。いつだって眠い…。

最近のつぶやき

@umkn1020 (07/03-18:57)
RT @kamo_hiroyasu: 「人口の1割は複文が処理できないのだから、そのつもりで行動しろ」と助言することが時々あるのですが、「何もしなければ、42万人死亡する」を「42万人死亡する」と誤読して「外した」と煽る人がわらわらと湧いてきたことで、説得力が増しました。
@umkn1020 (07/03-18:49)
RT @taijijiji: 外資企業が日本市場でhiring難しいとは聞いていましたがこれほどとは。。日本人の転職の心理的ハードルの高さ、英語ポジションへの苦手意識が伺える。。英語は実質的な語学スキルよりも「やっていける自信がない」「怖い」「どうせ落とされる」というメンタリテ…
@umkn1020 (07/03-13:03)
RT @yuutosi_hiyuu: 声だして笑った https://t.co/EjqAUuT3z0
@umkn1020 (07/02-16:02)
Smart LifeでIFTTT使えなくなっていたのか…
@umkn1020 (07/01-17:23)
RT @rioriost: だーかーらー、HAクラスタをすぐ組もうとしない!w オンプレの発想をそのまま持ってくるんじゃなく、クラウドに合ったやり方を学びましょうよ。 できるよ、IaaSでHAクラスタも組めるよ。 でも、スタンバイノードのコストを払い続けるの、なんかおかし…

エントリーリスト

カテゴリーリスト

タグ