CentOS8.2にelastic stackをインストールするメモ



公開: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日無料期間に読んで解約もアリだと思います。笑)



【tech】CentOS7.8でsubversion serverを構築するメモ

環境


ホスト:Windows10
仮想化:VirtualBox
OS:CentOS7.8
IP:192.168.56.101

手順


・SElinuxの無効化
vi /etc/sysconfig/selinux


#SELINUX=enforcing
SELINUX=disabled


・firewallの許可設定
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-port=3690/tcp --permanent

・設定反映のためリブート
reboot

・subversion関連ソフトのインストール
yum install -y subversion mod_dav_svn mod_ldap mod_ssl

・リポジトリの作成
mkdir -p /svn_repo/test_repo/
ls -ld /svn_repo/test_repo/
sudo svnadmin create --fs-type fsfs /svn_repo/test_repo/repo
svn mkdir file:///svn_repo/test_repo/repo/code -m "create"
svn mkdir file:///svn_repo/test_repo/repo/document -m "create"
svn mkdir file:///svn_repo/test_repo/repo/operation -m "create"

・権限変更
chmod -R g+w /svn_repo/test_repo

・所有者変更
chown -R apache:apache /svn_repo/test_repo/

・設定ファイルの作成
cd /svn_repo/test_repo/repo/conf
cp -p svnserve.conf svnserve.conf.org

・設定ファイルの編集
vi svnserve.conf
 最下部へ下記を追加


[general]
anon-access = read
auth-access = write
authz-db = authz
realm = test.co.jp


・ディレクトリ移動
cd /svn_repo/test_repo/repo/conf/

・ファイルの作成
cp -p authz authz.org

・ファイル編集
vi authz
 最下部へ下記を追記


[/]
* = rw


・仮想ルートを修正
vi /etc/sysconfig/svnserve
 下記の通り修正


#OPTIONS="-r /var/svn"
OPTIONS="-r /svn_repo/test_repo/repo/"


・svn起動
systemctl status svnserve
systemctl enable --now svnserve
systemctl status svnserve

Apacheのセットアップ


・confファイル編集
vi /etc/httpd/conf/httpd.conf
最下部に下記を追加

<Location /svn_repo>
DAV svn
SVNPath /svn_repo/test_repo/repo
AuthzSVNAccessFile /svn_repo/test_repo/repo/conf/authz
</Location>

https化設定

・鍵作成
openssl genrsa -aes128 2048 > server.key


Enter pass phrase:
→svkey ※任意の文字列



openssl rsa -in server.key -out server.key


Enter pass phrase for server.key:
 →svkey


・CSR作成
openssl req -new -key server.key > server.csr
※全て空欄でEnterでOKです(9回Enterを押せばOKです)

・証明書作成
openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt

・秘密鍵と証明書移動
mkdir /etc/httpd/ssl/
cp server.key server.crt /etc/httpd/ssl/

・パーミッション変更
chmod 400 /etc/httpd/ssl/server.*

・設定変更
cp -p /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bk

vi /etc/httpd/conf.d/ssl.conf
※以下の通り、2項目を修正


※約101行目
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/httpd/ssl/server.crt

※約107行目
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/httpd/ssl/server.key


・HTTP→HTTPSリダイレクト設定
vi /etc/httpd/conf.d/rewrite.conf
※以下記載

<ifModule mod_rewrite.c>
RewriteEngine On
LogLevel crit rewrite:trace3
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%\{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifModule>

・httpdの再起動
systemctl restart httpd
systemctl status httpd
systemctl enable httpd

テストファイルのインポート
echo "test">test.txt
svn import test.txt file:///svn_repo/test_repo/repo/code/test.txt -m "import"
svn list file:///svn_repo/test_repo/repo/code

・ブラウザアクセス
https://192.168.56.101/svn_repo

CentOS7でntpサーバ構築(chrony使用)



公開:2020/05/19
更新:2020/05/19

環境


OS:CentOS7.7
ntpサーバ:10.167.10.10
ntpクライアント:192.168.100.100/24
          10.0.0.100/24

手順




・インストール
yum install -y chrony

・設定ファイルのバックアップ
cp -p /etc/chrony.conf /etc/chrony.conf.org

・設定ファイルの更新
vi /etc/chrony.conf


# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

Server にこのサーバから時刻同期を取りに行くサーバのFQDNやIPアドレスを記載します。

# Allow NTP client access from local network.
allow 192.168.0.0/16
allow 10.0.0.0/8

allow ディレクティブにクライアントからアクセスを許可するIPアドレスを記載します。

・chronyの再起動
systemctl restart chronyd

クライアントの設定





・時刻同期状態の確認
chronyc sources

[centos ~]$ chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
\===============================================================================
^+ 122x215x240x52.ap122.ftt> 2 9 377 138 -348us[ -348us] +/- 32ms
^- flightplandatabase.com 2 9 353 186 -377us[ -377us] +/- 154ms
^+ hit-bridge.com 2 9 377 889 -871us[ -957us] +/- 27ms
^* tama.paina.net 2 9 377 503 +221us[ +140us] +/- 25ms
[centos@ip-10-167-20-136 ~]$

・時刻同期先の変更
vi /etc/chrony.conf

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 10.167.10.10

・chronyの再起動
systemctl restart chronyd

おまけ





・クライアントがntpdの場合の時刻同期先の確認
ntpq -p

[root@ip] etc # ntpq -p
remote refid st t when poll reach delay offset jitter
\==============================================================================
10.167.10.10 133.243.238.163 2 u 2 64 1 1.952 17.270 0.000
*LOCAL(0) .LOCL. 10 l 2 64 377 0.000 0.000 0.000
[root@ip] etc #

・時刻同期先の更新
vi /etc/ntp.conf

#
# --- GENERAL CONFIGURATION ---
#
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available. The
# default stratum is usually 3, but in this case we elect to use stratum
# 0. Since the server line does not have the prefer keyword, this driver
# is never used for synchronization, unless no other other
# synchronization source is available. In case the local host is
# controlled by some external source, such as an external oscillator or
# another protocol, the prefer keyword would cause the local host to
# disregard all other synchronization sources, unless the kernel
# modifications are in use and declare an unsynchronized condition.
#
server 10.167.10.10
server 127.127.1.0      # local clock
fudge  127.127.1.0 stratum 10

・ntpdの再起動
systemctl restart ntpd

久しぶりにみてみると、モバイルバッテリーもずいぶん安くなってるんですね!

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)

下のPythonの本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)



【tech】CentOS8でダミーファイルを作成する方法



公開:2020/05/12
更新:2020/05/12

仕事でhttp通信確認をしていて、大きめのダミーファイルを作成する必要があったので、調べたメモです。

・10メガバイトの「bigfile」というダミーファイルを作るときのコマンドです。
fallocate -l 10m bigfile

※GBだと「fallocate -l 1g bigfile」、kbだと「fallocate -l 1k bigfile」500バイトだと「fallocate -l 500 bigfile」となります




久しぶりにみてみると、モバイルバッテリーもずいぶん安くなってるんですね!

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)

下のPythonの本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)



CentOS8の初期設定まとめメモ(ユーザ・グループ作成など)



公開:2020/05/13
更新:2020/05/13

最近自宅環境の整備ばっかりやっているのですが、自宅サーバにVMを作りまくっていたら、パーティションの設定がうまくできておらず、root領域が枯渇してしまっていました。。

やっぱり、基本に立ち返り、作業用ユーザを作ったり、グループ管理や、権限管理などしっかりして普段のプライベート使いから感覚を身に着けていかなきゃいけないなと思うようになりました。

まだ作成途中ですが、Linuxをインストールしたり、自宅環境を作った時の初期設定をまとめていこうと思います。

環境


OS:CentOS8

手順





・既存ユーザの確認
cat /etc/passwd

・ユーザ作成
useradd mas

・PW設定
passwd mas123

・既存グループの確認
cat /etc/group

・グループの作成
groupadd op

・masをopグループに追加
usermod -aG op mas

・sudoできるようにする場合は
usermod -aG wheel mas

・masにスイッチ
su mas

・所属しているグループを確認
id

コマンドメモ

・カーネルの確認
uname -r

・pciデバイスの確認
lspci

久しぶりにみてみると、モバイルバッテリーもずいぶん安くなってるんですね!

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)

下のPythonの本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)