让我们尝试从PowerShell向Elasticsearch投入数据

这是 2014 年的《Elasticsearch Advent Calendar》上的第十二篇文章。

首先

大家如何使用Elasticsearch呢?

当我们不仅可以从Logstash和Fluentd输入数据,而且还可以从Powershell输入数据时,我们能够极大地扩展数据的可视化范围。

在我的环境中,我将以下信息可视化了。

    • vmwareの情報をpowershellから投入

 

    • AWSの情報(ec2の稼働状態、cloudtrail)をpowershellから投入

 

    windowsのイベントログを投入

在Elasticsearch中,有各种不同的客户端,但是没有PowerShell客户端,因此我自己编写了一个函数并进行了介绍。

请提供一个中文本地化的使用例子。

我创建了一个名为Put-Elasticsearch的函数。
以下是一个将Windows事件日志投入Elasticsearch的示例样本。

## event logの取得
$events = Get-EventLog system -newest 1000

## 投入用にオブジェクトを加工
## 一意キーとタイムスタンプを付与。(kibana上でタイムスタンプのフィールドは指定できるが、レコードごとに把握が面倒なため、「@timestamp」に統一)

$events | %{
    $dateStr = Get-Date -Date $_.TimeGenerated | %{ $_.AddHours(-9) } | Get-Date  -format s                 

    $_ | Add-Member -MemberType NoteProperty -Name "@timestamp" -Value $dateStr | Out-Null

    #複数回投入してもよいように、一意キーを決める                                     
    $_ | Add-Member -MemberType NoteProperty -Name "objKey" -Value ($_.MachineName+"_"+$_.Index) | Out-Null 

}


Put-Elasticsearch  -putDatas $events -bulk $script:bulk -index $script:index  -elaHost $script:elaHost -port $script:port -type "winevent"

使用Head插件,方便进行确认。

elasticsearch-head.png

你已经进去了。

接下来,我们尝试使用vmware的API将虚拟机信息进行输入。
虚拟机的记录不同于日志记录,不包含时间信息,因此我们需要传递一个指定时间的状态。

##モジュールのロード
Add-PSSnapin VMware.VimAutomation.* -ErrorAction SilentlyContinue 

##ログイン
$vi = Connect-VIServer $sVCenter -User $sVCUser -Password $sVCPwd -ea silentlycontinue

##VMを取得して、余計なデータを落とす。リネームが必要なフィールドは適宜変換
$filterVm = Get-VM | select @{Name="vmid";Expression={$_.id}},NumCpu,MemoryMB ,@{Name="objKey";Expression={$_.id}}

## 時間情報をセットで渡す。分、秒等は切り捨て。
$date = Get-Date -Minute 0 -Second 0
Put-Elasticsearch  -putDatas $filterVm -bulk $script:bulk -index $script:index  -elaHost $script:elaHost -port $script:port -type "vmwarevm" -date $date


很好,您已经进来了。

vminfo.png

总结

PowerShell 在 Windows 环境中非常强大,非常适用于数据采集和处理。由于各种限制,Windows 环境仍然存在许多需求。因此,通过使用 PowerShell,可以将各种数据导入 Elasticsearch,实现多种状态的可视化。

对于管理Windows环境的人来说,不妨试试一下吗?

填補

经过验证,elasticsearch版本为”1.0.2″可以正常运行。需要升级版本。

广告
将在 10 秒后关闭
bannerAds