HPE ProLiant MicroServer Gen10 Plus v2 購入

HPのサーバーは12年前に購入したHP ProLiant ML110 Generation 6が今もGitLabやWebAppサーバーとして稼働している(*´ェ`)
それを移行しようと考えて買ってしまったのだ(*゚ェ゚*)
プロセッサーは Xeon E-2314 を選択(*´ェ`)

実はすでに一ヶ月前に届いていて、ようやく設置した(*´ェ`)

OSはRed Hat Enterprise Linux 9をインストール(*゚ェ゚*)

UPS電源を導入していたので今回は電源プラグを3ピンから2ピンに変換するやつは買わなくてもよかった(*゚ェ゚*)なぜか未開封の3ピン→2ピンに変換するやつがジャンクボックスにあったけど..🤔

YAMAHA RTX830 買った

CentOS8 Stream で Firewall-cmd –reload が時間がかかった問題でどうにもならなかった場合を考えてルーターでなんとかしてみようかなと思い購入(*´ェ`)RHEL8にしてどうにかなってしまったけれどもルーターを調べているうちに欲しくなった(*´ェ`)

YAMAHA RTX830 YAMAHA RTX830

設定はPPPoEと静的ルーティングと静的IPマスカレードとVPN(*´ェ`)
不正アクセス検知を有効にしてみた(*゚ェ゚*)

IPフィルターで外部からPINGに反応しないように ICMP を reject-nolog にしてフィルタ適用をしてみたけれども外からPINGを打つと返って来てしまう..(*´ェ`)

IPフィルターは諦めて以下のコマンドで応答しないようして外部からPINGを打つと無事タイムアウトした(*゚ェ゚*)
ip stealth pp1

CentOS 8 Stream から RHEL 8 に変更

CentOS 8 Stream で運用していこうとWebサーバ、メールサーバ、データベースなどの構築をしていたけれど Firewalld の設定を終えて firewall-cmd –reload を実行するとものすごい時間が掛かった∑(*゚ェ゚*)

time を付けて計測すると6時間…(*´ェ`)

ipsetが数万超えてると時間が掛かる事が分かったけれどもCentOS 7 では数十秒で終わる処理が何故 CentOS 8 Stream で遅なるか原因がわからない(*´ェ`)

Firewalld が iptables から nftables に変わったからなのか issue にも2、3関連しそうなものがあった(*゚ェ゚*)

Firewalld か nftables にアップデート来るたびに firewall-cmd –reload を実行してみるも変わらず遅い…(*´ェ`)

もしかしてサーバースペックが足りないのでは..新しいやつ買うかAWSに移行..と思いがよぎったところで RHEL が個人開発者でも本番環境に無料で使えるという記事を見て、アカウントを作って RHEL 8 をインストールして使ってみることにした(*゚ェ゚*)
 
インストールはすんなり終わり、サブスクリプションの登録も少し詰まりながらなんとか登録完了し dnf upgrade も実行可能になった(*´ェ`)
 
せっかくなので今回から SELinux と付き合っていくことにした(*゚ェ゚*)
 
ssh,chrony,postfix,dovecot,dnsmasq,apache,mysql などを設定し WordPress や Let’s Encrypt の移行を終わらせてからの Firewalld (*´ェ`)最初にやればヨカッタ
 
数万ある ipset を用意して いざ

# time firewall-cmd --reload 
real 0m20.731s
user 0m0.334s
sys 0m0.027s

あらら早い∑(*゚ェ゚*)6時間と比べたらね..(*´ェ`)

CentOS 8 Stream にした

11月30日のCentOS 6 のサポート終了までに CentOS 6 で運用してた Webサーバやメールサーバなどを一旦 CentOS7 が入っているサーバに移行し、しばらく運用していた(*´ェ`)

CentOS 6 で稼働しているサーバを CentOS 8 にする計画

  1. (Aサーバ)CentOS 6 から (Bサーバ)CentOS 7 へ Webサーバなどを移行
  2. (Aサーバ)CentOS 6 を削除して CentOS 8 をインストール
  3. (Bサーバ)CentOS 7 から (Aサーバ)CentOS 8 へ Webサーバなどを移行

こんな感じで考えていたら計画1が終わったぐらいにCentOS 8 がサポート期間が短くなり終了、今後は CentOS 8 Stream に移行するようなのでどうしようか迷った∑(*゚ェ゚*)

Ubuntu にしてしまおうかとも思ったけれど CentOS 8 Stream を入れた(*´ェ`)

今年は計画2で終わった(*´ェ`)来年は計画3スタート(*゚ェ゚*)

1U Fanless Server

1U Fanless Server を購入した(*´ェ`)

Wow!ファンレスなので全く音がしない(*゚ェ゚*)

CPU は Intel の Xeon E3-1220L V2 で TDP 17W の 低消費電力!

マザーボードは ASUS P8B-M

ストレージは Intel SSD 520 Series 120GB SSDSC2CW120A310

このファンレスサーバーにCentOSを入れて運用する予定(*´ェ`)

CentOS6.2でPostfix+DovecotのIPv6無効化

PostfixがデフォルトでIPv6が有効になってるので

vi /etc/postfix/main.cf
# Enable IPv4, and IPv6 if supported
#inet_protocols = all
inet_protocols = ipv4

に変更。

DovecotもデフォルトでIPv6が有効になってるので

vi /etc/dovecot/dovecot.conf
# A comma separated list of IPs or hosts where to listen in for connections. 
# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
# If you want to specify non-default ports or anything more complex,
# edit conf.d/master.conf.
#listen = *, ::
listen = *

に変更(*´ェ`)

MySQLで1677万7千2百16件のレコード

16,777,216という数字は256の3乗


"0";"0,0,0";"000000"
"1";"0,0,1";"000001"
"2";"0,0,2";"000002"



"16777213";"255,255,253";"FFFFFD"
"16777214";"255,255,254";"FFFFFE"
"16777215";"255,255,255";"FFFFFF"

というtest.txtファイルを作り
/var/www/phpmyadmin/upload/
へ置く。

fullcolorというテーブルを作り、id(UNSIGNED INT(10)),rgb_number(char(11)),hexadecimal_number(char(6))というフィールドを作る。

データのインポート前に主キーやUNIQUE 制約を外す。

LOAD DATA INFILE "/var/www/phpmyadmin/upload/test.txt" INTO TABLE fullcolor FIELDS TERMINATED BY ';' ENCLOSED BY '"'
16777216 行挿入しました。 ( クエリの実行時間 275.6740 秒 )
ALTER TABLE `fullcolor` ADD PRIMARY KEY (`id`) 
id に主キーを追加しました ( クエリの実行時間 491.7823 秒 )
ALTER TABLE `fullcolor` ADD UNIQUE ( `rgb_number` )
rgb_number にインデックスを追加しました ( クエリの実行時間 232.1061 秒 )
ALTER TABLE `fullcolor` ADD UNIQUE ( `hexadecimal_number` )
hexadecimal_number にインデックスを追加しました ( クエリの実行時間 184.1452 秒 )

データのインポート前に主キーやUNIQUE 制約をつけた場合、
7時間かかった(*´ェ`)

Apacheログを指定の日数で取り出すシェルスクリプト

Apacheのアクセスログから“今日[実行日]を含まない”指定した日数分を取り出すシェルスクリプトがあれば便利だなと思って作ってみた(*´ェ`)
というより必要だったのだ(*´ェ`)>

イメージにするとこんな感じ
Apacheのアクセスログは月別に保存されている。
cutlogday

#!/bin/bash

######################
#
# version : Alpha
# author  : foloro
#
######################

#引数の数をチェック
if [ $# -ne 3 ]; then
	echo "使用方法 : $0 過去の日数 入力ファイル 出力ファイル"
	exit 1
fi

#引数の過去の日数をチェック
if [ $1 -lt 1 ]; then
	echo "日数は1以上の値で指定してください"
	exit 1
fi

#引数の入力ファイルが存在するか
if [ -f $2 ]; then
	echo "ファイルが存在しません"
	exit 1
fi

#変数に引数の日数、入力ファイル、出力ファイルのパスを格納する
DAYNUM=$1
INPUTFILE=$2
OUTPUTFILE=$3

for (( i = 1; i <= $DAYNUM; i++ ))
do
	DAYS[i-1]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done

searchQuery=${DAYS[0]}

for (( i = 1; i < $DAYNUM; i++ ))
do
	searchQuery="$searchQuery""|""${DAYS[$i]}"
done

echo $searchQuery

cat $INPUTFILE | grep -E $searchQuery > $OUTPUTFILE

使い方
シェルスクリプトをcutlogday.shという名前で作成して
Apacheのアクセスログがspecial-forces.jp-access_log-yyyymmddで過去100日間のログが欲しい場合

./cutlogday.sh 100 /var/log/httpd/special-forces.jp-access_log* matometa.log

とすれば、matometa.logに指定した今日を含めない過去100日分のログが書き出されている(*´ェ`)

という風に使おうと思っていたらどうもスマートじゃない気がする(*´ェ`)
友達から“UNIXという考え方”という本を薦められて買って読んだらピンと来た∑(*゚ェ゚*)ピコン!

そして書き直したコードがこっち

#!/bin/bash

######################
#
# version : Bravo
# author  : foloro
#
######################

#引数の数をチェック
if [ $# -ne 1 ]; then
	echo "使用方法 : $0 過去の日数"
	exit 1
fi

#引数の過去の日数をチェック
if [ $1 -lt 1 ]; then
	echo "日数は1以上の値で指定してください"
	exit 1
fi

#日付を配列に格納する
DAYNUM=$1

for (( i = 1; i <= $DAYNUM; i++ ))
do
	DAYS[i-1]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done

searchQuery=${DAYS[0]}

for (( i = 1; i < $DAYNUM; i++ ))
do
	searchQuery="$searchQuery""|""${DAYS[$i]}"
done

grep -E $searchQuery

使い方
シェルスクリプトをcutlogday.shという名前で作成して
Apacheのアクセスログがspecial-forces.jp-access_log-yyyymmddで過去10日間のログが欲しい場合

cat /var/log/httpd/special-forces.jp-access_log* | ./cutlogday.sh 10 > matometa.log

こうゆうことなのだ∑(*゚ェ゚*)

でも過去2日間のログを取り出すだけで過去何ヶ月ものログを開いているのは無駄な気がする(*´ェ`)

Version Charlie へ続く。

MuninでHDDの使用量と空き容量を監視

MuninでHDDの使用量と空き容量を表示してみよう(*´ェ`)

まーずーは
Munin Exchange | freedisk plugin
からプラグインをダウンロード。
作者さんのサイトはこちら

ダウンロードしたプラグインを
/usr/share/munin/plugins/
ディレクトリに入れる。
実行権限を付加するのを忘れないように!d(゚ー゚*)o

df
コマンドで監視したいHDDを調べる

私が監視したいのは rootfs と home なので
ln -s /usr/share/munin/plugins/freedisk /etc/munin/plugins/freedisk_roots


ln -s /usr/share/munin/plugins/freedisk /etc/munin/plugins/freedisk_home

にした(*´ェ`)

sda1の場合は
ln -s /usr/share/munin/plugins/freedisk /etc/munin/plugins/freedisk_sda1

そしてmunin-node を再起動
/etc/rc.d/init.d/munin-node restart

5分ほど待った後・・・

ハイ、表示された(*゚ェ゚*)
munin-freedisk

んがしかし、このままでは空き容量のラインがディスク容量の裏に描画されており見難いというか見えないなので表にだしてやる(*´ェ`)

ついでに使用量も表示するようにプラグインを改変する(*´ェ`)
改変したコードを公開していいか分からないので公開しません <(_ _)>

うん見やすい(*゚ェ゚*)
munin-freedisk

MuninでHDDの温度を監視

MuninでHDDの温度を表示してみよう(*´ェ`)

まーずーは
yum -y install hddtemp
でインストールする
それから
vi /etc/sysconfig/hddtemp
hddtempの設定ファイルを開いて
HDDTEMP_OPTIONS="-l 127.0.0.1 /dev/sda"
という風に /dev/sda を追記する

そしてhddtempを実行する
hddtemp /dev/sda
そうすると
/dev/sda: GB0160EAPRR: 34°C
と表示された(*´ェ`)

そしてそして Munin のプラグインへのリンクを作成してln -s /usr/share/munin/plugins/hddtemp /etc/munin/plugins/hddtemp

プラグインの設定をする
vi /etc/munin/plugin-conf.d/munin-node
設定ファイルを開いたら
[hddtemp]
user root
env.drives sda

を追記する
どのように設定するかはプラグインファイルに書いてある(*´ェ`)

最後にmunin-node を再起動
/etc/rc.d/init.d/munin-node restart

5分ほど待った後・・・

ハイ、表示された(*゚ェ゚*)