
ElasticsearchでユビキティのUniFiのLOGを収集し、Grafanaで可視化
そして、私たちはさらに奇妙なことを続けます… 今日は、Ubiquiti Unifi環境にログを収集する最初のものです, 当社のAPの, スイッチ… 2回目は解析します。, ログはLogstashで処理し、デザートにはElasticsearchに保存します, そして、ケーキの上のアイシングは、Grafanaでそれを視覚化することです. これらすべてが、通信インフラストラクチャで何が起こるかをリアルタイムで制御するためのものです, Wisfisにアクセスしようとしている人…
まあ、私が言ったこと, もし私たちがそこにいくつかのサービスを提供しているユビキティを持っていて、そこで何が起こっているのかを知りたいなら, 誰が誰とコミュニケーションをとるか… 私はWiFiの部分にもっと興味がありました, 接続試行を表示する, お客様の健康… それぞれが最も興味を持っているものを視覚化します. そこで、まずUniFiコンソールにログをsyslogに保存するように指示します, Logstashはログを送信し、収集したデータを興味深いフィールドに分割してフィルタリングできるようにするためのサンプルファイルを残します, 同じ設定ファイルは、すでに異なるフィールドに分割されている情報がElasticsearchインデックスに保存されていることを示します. そして、KibanaまたはGrafanaを使用して、関心のある情報をダッシュボードに視覚化し、関心のある形式で視覚化します.
まず、明らかにElastic Stackパーツをインストールする必要があります, これまでの経緯 ログスタッシュ, エラスティックサーチ そして キバナ; 次に、UniFiコントローラーコンソールからリモートsyslogを有効にします > “設定” > “システム設定” > “コントローラーの構成” > “リモートロギング”, そして、Syslog部分を有効にするだけで十分です, ネットコンソールなし. Indicamos la dirección IP de nuestro Logstash y un puerto aleatorio no usado donde mandará los Logs.
インプット { UDPの { タイプ => "ユニファイ" ポート => "1601" タグ => ["ユニファイ"] } } フィルター { もし [種類] == "ユニファイ" { グロック { マッチ => { "メッセージ" => [ "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{プログレッシブ:Proceso_nombre}: \[%{数:Proceso_pid}\] \[%{日付:Proceso_tarea}\] DNS 要求がタイムアウトしました; \[STA: %{コモンマック:Cliente_MAC}\]\[クエリ: %{貪欲なデータ:Cliente_consulta}\] \[DNS_SERVER :%{IPV4の}\] \[TXN_ID %{日付:Txn_id}\] \[SRCPORTの %{数:Cliente_puerto_origen}\]", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{プログレッシブ:Proceso_nombre}: \[%{数:Proceso_pid}\] \[%{日付:Proceso_tarea}\] %{貪欲なデータ:メッセージ}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: wireless_agg_stats.log_sta_anomalies(\): bssid=%{コモンマック:BSSID_MAC} radio=%{言葉:BSSID_radio} vap=%{言葉:vap} sta=%{コモンマック:Cliente_MAC} satisfaction_now=%{数:Cliente_satisfaccion} anomalies=%{貪欲なデータ:Cliente_anomalia}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"query_%{数:Consulta_id}\":\"%{ホスト名:Consulta_FQDN}\",\"mac\":\"%{コモンマック:Cliente_MAC}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"query_server_%{数:Consulta_id}\":\"%{IPV4の:IP_servidor}\",\"assoc_status\":\"%{数:Asociacion_estado}\",\"vap\":\"%{言葉:vap}\",\"event_type\":\"%{日付:Evento_tipo}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"dns_resp_seen\":\"%{言葉:DNS_resp_seen}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"mac\":\"%{コモンマック:Cliente_MAC}\",\"vap\":\"%{言葉:vap}\",\"assoc_status\":\"%{数:Asociacion_estado}\",\"event_type\":\"%{日付:Evento_tipo}\",\"event_id\":\"%{数:Evento_id}\",\"arp_reply_gw_seen\":\"%{言葉:ARP_resp_seen}\",\"auth_ts\":\"%{数:Auth_ts}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"query_server_%{数:Consulta_id}\":\"%{IPV4の}\",\"query_%{数:Consulta_id}\":\"%{ホスト名:Consulta_FQDN}\",\"mac\":\"%{コモンマック:Cliente_MAC}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"assoc_status\":\"%{数:Asociacion_estado}\",\"vap\":\"%{言葉:vap}\",\"event_type\":\"%{日付:Evento_tipo}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"query_server_%{数:Consulta_id}\":\"%{IPV4の}\",\"mac\":\"%{コモンマック:Cliente_MAC}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"vap\":\"%{言葉:vap}\",\"%{日付:Evento_tipo}\",\"query_%{数:Consulta_id}\":\"%{ホスト名:Consulta_FQDN}\",\"assoc_status\":\"%{数:Asociacion_estado}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"mac\":\"%{コモンマック:Cliente_MAC}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"assoc_status\":\"%{数:Asociacion_estado}\",\"vap\":\"%{言葉:vap}\",\"event_type\":\"%{日付:Evento_tipo}\":\"%{数:Evento_id}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"mac\":\"%{コモンマック:Cliente_MAC}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"vap\":\"%{言葉:vap}\",\"query_server_%{数:Consulta_id}\":\"%{IPV4の}\",\"event_type\":\"%{日付:Evento_tipo}\",\"assoc_status\":\"%{数:Asociacion_estado}\",\"query_%{数:Consulta_id}\":\"%{ホスト名:Consulta_FQDN}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"dns_resp_seen\":\"%{言葉:DNS_resp_seen}\",\"mac\":\"%{コモンマック:Cliente_MAC}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"assoc_status\":\"%{数:Asociacion_estado}\",\"vap\":\"%{言葉:vap}\",\"event_type\":\"%{日付:Evento_tipo}\",\"event_id\":\"%{数:Evento_id}\",\"auth_ts\":\"%{数:Auth_ts}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: \[%{日付:Proceso_tarea}\].stahtd_dump_event\(\): \{\"dns_resp_seen\":\"%{言葉:DNS_resp_seen}\",\"message_type\":\"%{日付:Mensaje_tipo}\",\"mac\":\"%{コモンマック:Cliente_MAC}\",\"ip_assign_type\":\"%{日付:Tipo_asignacion_ip}\",\"vap\":\"%{言葉:vap}\",\"assoc_status\":\"%{数:Asociacion_estado}\",\"event_type\":\"%{日付:Evento_tipo}\",\"auth_ts\":\"%{数:Auth_ts}\",\"wpa_auth_delta\":\"%{数:WPA_auth_delta}\",\"assoc_delta\":\"%{数:Assoc_delta}\",\"auth_delta\":\"%{数:Auth_delta}\",\"event_id\":\"%{数:Evento_id}\"\}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{プログレッシブ:Proceso_nombre}: %{言葉:vap}: STA %{コモンマック:Cliente_MAC} %{日付:Proceso_tarea}: %{貪欲なデータ:メッセージ}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: wevent.ubnt_custom_event\(\): %{日付:Evento_tipo} %{言葉:vap}: %{コモンマック:Cliente_MAC} / %{IPV4の:Cliente_ip}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: wevent.ubnt_custom_event\(\): %{日付:Evento_tipo} %{言葉:vap}: %{コモンマック:Cliente_MAC} / %{数:Evento_id}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: : %{プログレッシブ:Proceso_nombre}\[%{数:Proceso_pid}\]: %{貪欲なデータ:メッセージ}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{プログレッシブ:Proceso_nombre}: %{日付:Proceso_tarea}\[%{数:Proceso_pid}\]: %{貪欲なデータ:タスク}: %{貪欲なデータ:メッセージ}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{プログレッシブ:Proceso_nombre}: %{日付:Proceso_tarea} %{コモンマック:Cliente_MAC} %{言葉:vap} \(%{貪欲なデータ:メッセージ}\)", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{UNIXPATHの:Proceso_nombre}\[%{数:Proceso_pid}\]: %{貪欲なデータ:メッセージ}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{プログレッシブ:Proceso_nombre}: \[%{数:Proceso_pid}\] %{貪欲なデータ:メッセージ}", "^<%{ポシント:syslog_pri}>%{SYSLOGタイムスタンプ:syslog_timestamp} %{言葉:UniFi_MAC},%{貪欲なデータ:UniFi_Firmware}: %{プログレッシブ:Proceso_nombre}: %{日付:Proceso_tarea}: %{貪欲なデータ:メッセージ}" ] } } 唖 { 変換 => { "Cliente_satisfaccion" => "整数" } } } } アウトプット { もし ([種類]=="ユニファイ"){ エラスティックサーチ { インデックス => "unifi-%{+YYYYです。MM.ddの}" hosts=> "DIRECCION_IP_ELASTICSEARCH:9200" } } }
続ける, necesitamos crear un fichero en Logstash para ingestar, データの変換と送信. まず、前の手順で確認したUniFiで示されたTCPポートでリッスンします; 秒, 受信したログを処理し、それらを異なるフィールドに分けて、最終的にElasticsearchに保存します. そこで、例えば設定ファイル '/etc/logstash/conf.d/unifi.conf' を作成しましょう, フィルターを続けます, 私はできる限り自分のgrokをしました, この件については、賢者の方々にお詫び申し上げます, ただし、バージョン6.2.xのUbiquiti UniFiのログを収集することは完全に有効です. 最後は, 出力では、Elasticsearchを出力します, ユーザー名を入力することを忘れないでください & 私のパスワードはLABであり、私は最悪の慣行が大好きです… そして、本当に本当のグルを許してください、私のgroksは, 私はまだフィルターの1stにいます.
設定ファイルが作成されたら, Logstashサービスを再起動して、新しい構成を再ロードすることを忘れないでください. その後はいつものように, Kibanaに移動し、データが入ってきたら「Management」に進むことができます > 「スタック管理」 > 「キバナ」 > 「インデックスパターン」 > インデックスパターンを作成する「インデックスパターンを作成」, 私が言ったように, いつも通り (この場合、引用符は付けません) 'unifi-*'を使用すると、データはすでにElasticsearchに正しく保存されています. これで、「Discover」からUbiquiti UniFiインデックスに接続して、データを収集していることを視覚化できるようになりました.
そして、いつものようにグラファナに行き着きます! TKibana でのインデックスの作成, 今、私たちの最愛のGrafanaで、ElasticsearchとUniFiインデックスを対象とする「データソース」を作成する必要があります. それから、それはあなたの想像力を暴走させます, 異なるダッシュボードでダッシュボードを作成する, 視覚化するさまざまなデータを使用, 顧客満足度/接続品質を備えたグラフィック, 1 世界地図 着信/発信接続, スタイルの1つ サンキー クライアントIP/APを表示するには, 列形式で, で 行き詰り 成功したアクセスなどに関する特定のデータを表示するため, 間違った, 接続...
いつも通り, インスピレーションを与えたり、助けようとしたり, あなたがそれを改善するならば、あなたは😉それを私に伝えます これで、私たちは私たちの中に何が起こるかを見ることができます(s) ユビキティデバイス, アクセスポイントで, スイッチ上, リアルタイムで, 自動更新を every に 10 秒はとても印象的です, また、過去24時間の概要を分析するのにも役立ちます, または、何か奇妙なことが起こったときに知っています...隣人が接続しようとしているように。. いつも通り, ソーシャルネットワーク上でこの種のコンテンツを移動している方々に感謝します ふふ、ハグ!