ElasticSearch + Kibana + Fluentd で NetFlow コレクタを作成する
ElasticSearch + Kibana + Fluentd で NetFlow コレクタを作成する手順をメモしておきます。
OpenJDK のインストール
OpenJDK をインストールします。
| yum -y install java-1.8.0-openjdk
|
ElasticSearch のインストール
ElasticSearch をインストールする為に GPG-KEY をインポートしておきます。
| rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
|
リポジトリを定義します。以下の内容で /etc/yum.repos.d/elasticsearch.repo というファイルを新規作成します。
| [elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
|
ElasticSearch をインストールします。
| yum -y install elasticsearch
|
起動&自動起動の設定をしておきます。
| systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
|
Kibana のインストール
リポジトリを定義します。以下の内容で /etc/yum.repos.d/kibana.repo というファイルを新規作成しておきます。
| [kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
|
Kibana をインストールします。
設定ファイルは /etc/kibana/kibana.yml にあります。server.host を以下のように修正しておきます。
起動&自動起動の設定をしておきます。
| systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana.service
|
Fluentd のインストール
以下のスクリプトを実行することだけで Fluentd をインストール出来ます。
| curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
|
NetFlow を利用する為にプラグインをインストールしておきます。
| td-agent-gem install fluent-plugin-elasticsearch
td-agent-gem install fluent-plugin-netflow
|
NetFlow を利用する為に /etc/td-agent/td-agent.conf へ以下の内容を追記します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | <match netflow.**>
type elasticsearch
host localhost
port 9200
type_name netflow
logstash_format true
logstash_prefix flow
logstash_dateformat %Y%m%d
</match>
<source>
type netflow
tag netflow.event
port 5141
versions [5, 9]
</source>
|
Fluentd を systemctl から制御する為に、以下の内容で /etc/systemd/system/td-agent.service を新規作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | [Unit]
Description=Fluentd: data collector for Treasure Data
Documentation=http://docs.fluentd.org/
After=network-online.target consul_agent.service
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/td-agent/td-agent.pid
ExecStart=/etc/rc.d/init.d/td-agent start
ExecStop=/etc/rc.d/init.d/td-agent stop
ExecReload=/etc/rc.d/init.d/td-agent reload
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
|
起動&自動起動の設定をしておきます。
| systemctl daemon-reload
systemctl enable td-agent.service
systemctl start td-agent.service
|
Kibana にアクセスしてみる
Kibana は http:// 〜 :5601
でアクセスします。
参考
ElasticSearch の起動ログ
正常時
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | # systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2017-01-01 11:56:03 JST; 7min ago
Docs: http://www.elastic.co
Process: 832 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
Main PID: 835 (java)
CGroup: /system.slice/elasticsearch.service
└─835 /bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+Disab...
Jan 01 11:56:03 mgmt-centos7-02 systemd[1]: Starting Elasticsearch...
Jan 01 11:56:03 mgmt-centos7-02 systemd[1]: Started Elasticsearch.
Jan 01 11:56:04 mgmt-centos7-02 elasticsearch[835]: OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase fro...reads=N
Hint: Some lines were ellipsized, use -l to show in full.
|
メモリ不足時
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | # systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2017-01-01 11:37:57 JST; 10min ago
Docs: http://www.elastic.co
Process: 1038 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet -Edefault.path.logs=${LOG_DIR} -Edefault.path.data=${DATA_DIR} -Edefault.path.conf=${CONF_DIR} (code=exited, status=1/FAILURE)
Process: 1036 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
Main PID: 1038 (code=exited, status=1/FAILURE)
Jan 01 11:37:56 mgmt-centos7-02 elasticsearch[1038]: OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase fr...reads=N
Jan 01 11:37:57 mgmt-centos7-02 elasticsearch[1038]: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232...rno=12)
Jan 01 11:37:57 mgmt-centos7-02 elasticsearch[1038]: #
Jan 01 11:37:57 mgmt-centos7-02 elasticsearch[1038]: # There is insufficient memory for the Java Runtime Environment to continue.
Jan 01 11:37:57 mgmt-centos7-02 elasticsearch[1038]: # Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
Jan 01 11:37:57 mgmt-centos7-02 elasticsearch[1038]: # An error report file with more information is saved as:
Jan 01 11:37:57 mgmt-centos7-02 elasticsearch[1038]: # /tmp/hs_err_pid1038.log
Jan 01 11:37:57 mgmt-centos7-02 systemd[1]: elasticsearch.service: main process exited, code=exited, status=1/FAILURE
Jan 01 11:37:57 mgmt-centos7-02 systemd[1]: Unit elasticsearch.service entered failed state.
Jan 01 11:37:57 mgmt-centos7-02 systemd[1]: elasticsearch.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
|