公開:2020/06/21
更新:2020/06/21
久々の更新となりました。
以前Elastic Searchと、kibanaをインストールしたblogと動画を投稿したのですが、いろいろ調べていると、logstashというログの収集役のソフトウェアがあったり、ログを転送する役割のfilebeatというソフトウェアがあったりしたので、一緒にインストールしてみました。
使い方はこれから笑
環境
仮想化:VirtualBox6.1
OS:CentOS8.2
IPアドレス:192.168.56.101
・接続イメージです。
クライアント → nginx → kibana → elasticsearch ← logstach
別のノード → filebeat → → → → → → → ↑
・フロントにnginxを置いてbasic認証させる構成にしています。
・複数ホストで動かしたい場合はnginxのproxypassを変更して各elk stackのノードに転送させてあげてください。
・filebeatは別ノードに入れて、別のノードのログを転送させる事ができますが、メモのため同一ノードに入れています。ご自由にアレンジしてみて下さい。(やり方がわからなければコメント下さい)
手順
・SELinuxをオフにする
vi /etc/sysconfig/selinux
SELINUX=disabled
・Firewallの許可設定
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=5044/tcp --permanent
※filebeatのためのポートの許可
・設定反映のためにリブート
reboot
・OpenJDKのインストール
sudo dnf install -y java-11-openjdk-devel
・ディレクトリの確認
which java
→/usr/bin/java
・JAVAの環境設定
cat > /etc/profile.d/java11.sh <<EOF
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
EOF
・ファイルの読み込み
source /etc/profile.d/java11.sh
・ELKのリポジトリ追加
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
・ディレクトリ移動
cd /etc/yum.repos.d/
・リポジトリファイルの作成
vi elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
・ELKのインストール
sudo dnf install -y elasticsearch kibana logstash
ElasticSearchのセットアップ
・Elastic Serachの設定フォルダへ移動
cd /etc/elasticsearch/
・設定ファイルの編集
vi elasticsearch.yml
下記のディレクティブのコメントを外す。
network.host: 127.0.0.1
http.port: 9200
・ヒープサイズの変更
vi jvm.options
-Xms512m
-Xmx512m
・ElasticSearchの自動起動
sudo systemctl enable elasticsearch
・ElasticSearchのステータス確認
sudo systemctl status elasticsearch
・ElasticSearchの起動
sudo systemctl start elasticsearch
・ElasticSearchのステータス確認
sudo systemctl status elasticsearch
kibanaのセットアップ
・kibanaの設定ファイルディレクトリへ移動
cd /etc/kibana/
・kibanaの設定ファイルを更新
vi kibana.yml
→下記のディレクティブのコメントアウト
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"
・kibanaの自動起動
sudo systemctl enable kibana
・kibanaのステータス確認
sudo systemctl status kibana
・kibanaの起動
sudo systemctl start kibana
・kibanaのステータス確認
sudo systemctl status kibana
Nginxのセットアップ
・Nginxのインストール
sudo dnf install -y nginx httpd-tools
・Nginxの設定ファイルインクルードディレクトリへ移動
cd /etc/nginx/conf.d/
・kibana用のconfファイル作成
vi kibana.conf
server {
listen 80;
server_name 192.168.56.101;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass http://127.0.0.1:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
・basic認証を作成
sudo htpasswd -c /etc/nginx/.kibana-user kusomemo
→任意PW入力。※ここでは「tokyo」とします
ユーザ:kusomemo
PW:tokyo
・設定ファイルの確認
nginx -t
・nginxの自動起動
sudo systemctl enable nginx
・nginxのステータス確認
sudo systemctl status nginx
・nginxの起動
sudo systemctl start nginx
・nginxのステータス確認
sudo systemctl status nginx
logstashのセットアップ
・logstashの設定ディレクトリに移動
cd /etc/logstash/
・ヒープサイズの変更
vi jvm.options
-Xms512m
-Xmx512m
・設定ファイルのインクルードディレクトリに移動
cd /etc/logstash/conf.d/
・インプットポートの設定ファイル作成
vi input-beat.conf
input {
beats {
port => 5044
}
}
・syslogフィルタconf作成
vi syslog-filter.conf
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
・elasticsearch向けoutputのconfファイル作成
vi output-elasticsearch.conf
output {
elasticsearch { hosts => ["127.0.0.1:9200"]
hosts => "127.0.0.1:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
・logstashの自動起動
sudo systemctl enable logstash
・logstashのステータス確認
sudo systemctl status logstash
・logstashの起動
sudo systemctl start logstash
・logstashのステータス確認
sudo systemctl status logstash
Filebeatのインストール
※この手順メモは別ノードにfilebeatをインストールする事を想定しています。
同一ノードでの作業の場合、GPGキーのインストールからリポジトリの設定は既に実施済みの為、不要です。
・GPG-KEYのインストール
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
・ディレクトリの移動
cd /etc/yum.repos.d/
・リポジトリの設定
vi elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
・filebeatのインストール
sudo dnf install -y filebeat
・filebeatの設定ディレクトリに移動
cd /etc/filebeat/
・設定ファイルの編集
vi filebeat.yml
→elasticsearch向けのディレクティブをコメントアウトし、
logstash向けの設定を記述
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
output.logstash:
# The Logstash hosts
hosts: ["192.168.56.101:5044"]
・moduleが読み込めるか確認
filebeat modules list
・systemモジュールをenable
filebeat modules enable system
・ディレクトリの移動
cd /etc/filebeat/
・systemモジュールの編集
vi modules.d/system.yml
→var.pathを追記
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/messages"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/secure"]
・filebeatの自動起動
sudo systemctl enable filebeat
・filebeatのステータス確認
sudo systemctl status filebeat
・filebeatの起動
sudo systemctl start filebeat
・filebeatのステータス確認
sudo systemctl status filebeat
動作確認
・ELKサーバにアクセス
http://192.168.56.101/
Username:kusomemo
PW:tokyo
kibanaのダッシュボードが表示されれば想定通りです。
もし表示されてなければ、転送・連携処理がうまくいってなかったり
サービスが起動していなかったりすると思いますので、
systemctlでelkやnginxが起動しているかどうか
ss -antでリッスンできているかどうかをご確認お願いいたします。
久しぶりにみてみると、モバイルバッテリーもずいぶん安くなってるんですね!
皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)
下のPythonの本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)