Elastic Stack を使って Cisco ログを可視化する#
Elastic Stackは、ログやメトリクス、アプリケーションのトレースなどのデータを収集、保存、分析、可視化するためのオープンソースのプラットフォームです。
Cisco IOSログをElastic Stackで検索するためには、以下の手順に従うことができます。
1.Dockerをインストールする まず、Dockerをインストールしてください。Dockerは、Elastic StackとCisco IOSデバイスを実行するために必要な仮想環境を提供します。
- Elastic StackをDockerで実行する 次に、Docker Composeを使用してElastic Stackを実行するDockerコンテナを起動します。以下は、Docker Composeファイルの例です。
version: '2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.0
container_name: elasticsearch
environment:
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
volumes:
- elasticsearch:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:7.12.0
container_name: kibana
ports:
- 5601:5601
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
logstash:
image: docker.elastic.co/logstash/logstash:7.12.0
container_name: logstash
volumes:
- ./logstash/config:/usr/share/logstash/config
ports:
- 5044:5044
- 9600:9600
environment:
- "XPACK_MONITORING_ENABLED=false"
- "XPACK_SECURITY_ENABLED=false"
volumes:
elasticsearch:
docker-compose up -d で コンテナ作成
このDocker Composeファイルでは、Elasticsearch、Kibana、およびLogstashの3つのコンテナを定義しています。
Elasticsearchは9200および9300ポートを公開し、Kibanaは5601ポートを公開しています。
Logstashは、5044ポートと9600ポートを公開し、Logstashの設定を含むコンテナ内の./logstash/configディレクトリにボリュームをマウントします。
- Cisco IOSデバイスからログを送信する 次に、Cisco IOSデバイスからログをElastic Stackに送信する必要があります。これには、Cisco IOSデバイスのSyslogサーバーの設定を変更する必要があります。 以下は、Syslogサーバーの設定の例です。
- ログをインデックス化するには、LogstashでCisco IOSログを処理するパイプラインを作成する必要があります。 以下は、Cisco IOSログを処理するLogstashパイプラインの例です。
input {
tcp {
port => 514
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{CISCO_TAGGED_SYSLOG}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601" ]
}
syslog_pri { }
mutate {
rename => { "host" => "device" }
}
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "cisco-ios-logs-%{+YYYY.MM.dd}"
}
}
このLogstashパイプラインは、TCPポート514でSyslogメッセージを受信し、grokフィルターを使用してメッセージを解析します。Cisco IOSデバイスからのログメッセージは、通常、CISCO_TAGGED_SYSLOGという形式で送信されます。Logstashは、timestampフィールドを解析して、ログエントリの日付と時刻を取得します。Syslog_priフィルターは、Syslogメッセージの優先度を取得します。最後に、elasticsearchアウトプットプラグインを使用して、ログをElasticsearchに送信し、"cisco-ios-logs-<日付>"という名前のインデックスに格納します。
ログを検索するには、Kibanaを使用して、Elasticsearchに格納されたログデータを可視化することができます。KibanaのDiscoverタブを使用して、ログを検索し、フィルタリングすることができます。また、KibanaのVisualizeタブを使用して、ログデータのグラフやチャートを作成することもできます。
Linux に 環境構築#
Dockerを使用せずにCisco IOSログを検索する場合、以下の手順を実行することができます。
-
Elasticsearchのインストール Elasticsearchの公式サイトからインストールパッケージをダウンロードして、Linuxサーバーにインストールします。
-
Logstashのインストール Logstashの公式サイトからインストールパッケージをダウンロードして、Linuxサーバーにインストールします。
-
Kibanaのインストール Kibanaの公式サイトからインストールパッケージをダウンロードして、Linuxサーバーにインストールします。
-
Logstashの設定 Logstashの設定ファイルを作成します。以下は、Cisco IOSログを処理するLogstashパイプラインの例です。
input {
udp {
port => 514
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{CISCO_TAGGED_SYSLOG}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601" ]
}
syslog_pri { }
mutate {
rename => { "host" => "device" }
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "cisco-ios-logs-%{+YYYY.MM.dd}"
}
}
- Logstashの起動
Logstashを起動して、設定ファイルを読み込みます。
- Kibanaの設定
Kibanaの設定ファイルを編集し、Elasticsearchのホストとポートを設定します。
- Kibanaの起動
Kibanaを起動します。
- ログの検索
KibanaのDiscoverタブを使用して、ログを検索し、フィルタリングすることができます。 また、KibanaのVisualizeタブを使用して、ログデータのグラフやチャートを作成することもできます。KibanaのDashboardタブを使用して、複数のビジュアライゼーションをまとめて表示するダッシュボードを作成することもできます。
たとえば、以下は、Cisco IOSデバイスからのSyslogメッセージのレベルごとの分布を示すKibanaビジュアライゼーションの例です。
8-1. KibanaのVisualizeタブを開きます。 8-2. "Create Visualization"を選択し、"Vertical bar chart"をクリックします。 8-3. "From a new search"を選択し、Elasticsearchのインデックスを選択します。 8-4. "X-Axis"をクリックして、"Terms"を選択し、"syslog_facility.keyword"を選択します。 8-5. "Y-Axis"をクリックして、"Split Series"を選択し、"syslog_severity.keyword"を選択します。 8-6. "Panel settings"でタイトルを設定し、保存します。
このビジュアライゼーションでは、SyslogメッセージのFacilityとSeverityの組み合わせに基づいて、 バーチャートが生成されます。このように、Kibanaを使用して、Cisco IOSログを視覚化し、洞察を得ることができます。
Regenerate response