Skip to content

Elastic Stack を使って Cisco ログを可視化する#

Elastic Stackは、ログやメトリクス、アプリケーションのトレースなどのデータを収集、保存、分析、可視化するためのオープンソースのプラットフォームです。

Cisco IOSログをElastic Stackで検索するためには、以下の手順に従うことができます。

1.Dockerをインストールする まず、Dockerをインストールしてください。Dockerは、Elastic StackとCisco IOSデバイスを実行するために必要な仮想環境を提供します。

  1. Elastic StackをDockerで実行する 次に、Docker Composeを使用してElastic Stackを実行するDockerコンテナを起動します。以下は、Docker Composeファイルの例です。
docker-compose.yml
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ディレクトリにボリュームをマウントします。

  1. Cisco IOSデバイスからログを送信する 次に、Cisco IOSデバイスからログをElastic Stackに送信する必要があります。これには、Cisco IOSデバイスのSyslogサーバーの設定を変更する必要があります。 以下は、Syslogサーバーの設定の例です。
logging host <ElasticsearchのIPアドレス> transport udp port 514
  1. ログをインデックス化するには、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ログを検索する場合、以下の手順を実行することができます。

  1. Elasticsearchのインストール Elasticsearchの公式サイトからインストールパッケージをダウンロードして、Linuxサーバーにインストールします。

  2. Logstashのインストール Logstashの公式サイトからインストールパッケージをダウンロードして、Linuxサーバーにインストールします。

  3. Kibanaのインストール Kibanaの公式サイトからインストールパッケージをダウンロードして、Linuxサーバーにインストールします。

  4. 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}"
  }
}
  1. Logstashの起動

Logstashを起動して、設定ファイルを読み込みます。

sudo service logstash start
  1. Kibanaの設定

Kibanaの設定ファイルを編集し、Elasticsearchのホストとポートを設定します。

server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
  1. Kibanaの起動

Kibanaを起動します。

sudo service kibana start
  1. ログの検索

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