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 をインストールします。
yum -y install kibana
設定ファイルは /etc/kibana/kibana.yml にあります。server.host を以下のように修正しておきます。
server.host: "0.0.0.0"
起動&自動起動の設定をしておきます。
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 へ以下の内容を追記します。
<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 を新規作成します。
[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 の起動ログ
正常時
# 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.
メモリ不足時
# 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.
コメント