20201023のLinuxに関する記事は11件です。

Linux版Zoomでフォントサイズもウィンドウサイズも大きいので小さくした

きっかけ

いつの日からかデフォルトフォントが大きいなーと思っていたのですが、会話する分にも発表スライドを閲覧する分にも困っていなかったので、そのまま使っていました。
先日、オンラインカンファレンスに参加した時にログインアンケート(入室直後にポップアップでアンケートが表示されるアレ)があって困りました。フォントが大きいのでウィンドウがデスクトップ内に収まらず、回答を送信するボタンがデスクトップ欄外に位置してしまって押せないからです。

Before:
Before

フォントサイズを小さくする方法がないかと探していた結果、見つかったのでメモとしてここに残します。同じ悩みの方に良き情報になれば幸いです。

変更点

~/.config/zoomus.conf ファイルを下のように変更して、Zoomアプリを再起動しました。

-autoScale=true
+autoScale=false

After:
After

その他の情報

私の環境では適さなかったですが、情報として記載があったのでココに記載します。

私の環境では変化が無かったのですが、参考文献[2]ではscaleFactorを1から2に変更することが書かれています。

また、参考文献[1]に下のように環境変数を指定することも書かれていました。私の環境では崩れてしまったので、実施していません。

$ export QT_SCALE_FACTOR=0.50
$ zoom

Resources

Version

  • ver: 5.3.472687.1012 (debian, 64)

参考文献

  1. https://www.reddit.com/r/Zoom/comments/hat5af/linux_client_ui_elements_too_large_after_update/
  2. https://superuser.com/questions/1381054/how-to-enable-hidpi-support-on-zoom-us-linux-client?newreg=83b23554232d435eb0ead7523144753f
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu 16.04でコマンドのショートカットを作る

sshのログインなどいちいち長いコマンドを打つのは面倒なので、ショートカットでコマンドを起動できたら楽だなーと思って調べた。
エイリアスという手もあるがいちいち登録するのがめんどくさいし結局コマンドを打たなくてはいけない。

他のディストリビューションでも使えるかどうかはわからないが、Ubuntuであれば多分使える。

環境

  • Ubuntu 16.04.7 LTS

手順

  • ディレクトリ上で空のファイルを作成。名前は任意で拡張子は.desktop

  • 作ったファイルにgeditなりvimなりを使って以下の内容を記述。
    Nameにはわかりやすい名前を、Execには実行したいコマンドを記述する。
[Desktop Entry]
Name=ssh_connect_raspberrypi
Exec=ssh pi@192.168.11.25
Terminal=true
Type=Application
  • ファイルに実行権限をもたせる。右クリックでプロパティ>アクセス権からチェックボックを選択。

  • すると実行ファイルになるのでダブルクリックすると指定したコマンドを実行したターミナルが起動する。

備考

ちなみに記述した内容は実は端末のショートカットのプロパティのここなので、こちらを編集しても作成可能。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

行から目的の文字列を抜き出したいときの方法 コマンド4選

Python クローリング&スクレイピング―データ収集・解析のための実践開発ガイド-
https://www.amazon.co.jp/dp/B01NGWKE0P/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

という書籍の
1.4.1電子書籍の総数を取得する
という章から学習した内容

grepで抜き出したhtmlコードから文字列のみを正規表現で抜き出すという操作
方法は4つ紹介されており

1. sedコマンドで正規表現にマッチした箇所を抜き出す
2. sedコマンドでマッチした箇所を取り除き、残った場所を取り除く
3. cutコマンドを使って特定の文字で区切られた文字列からn番目を抜き出す
4. awkコマンドを使ってスペースで桁揃えされた文字列からn番目を抜き出す

そもそものコマンドを知らない。。。のですが、前のページにsed,cutの説明はありました。

sed (Stream EDitorの略)

使用タイミング: 特定の条件にマッチする行を置換、削除できる
使用方法: 's/検索する正規表現/置換する文字列/オプション'

【使用例】

# .をスペースに置き換えて出力することができる /gは1行に検索する正規表現が複数回出現しても全部置き換えるということと同じ
XX | sed 's/./ /g'

cut

使用タイミング: 特定の文字で区切られたテキストの一部の列を抜き出すときに使う
【使用例】

# ,で区切った1列目と2列目のみを出力する。-dで区切り文字、-fで列の番号を指定。
XX | cut -d , -f 1,2

本題の1~4の方法で抜き出す処理について一つずつ見ていきたいと思います。

1. sedコマンドで正規表現にマッチした箇所を抜き出す

使用方法: sed -E 's/.*(抜き出したい箇所にマッチする正規表現)./\1/'
解読:
. は任意の1文字にマッチする
* は直前のパターンを0回以上繰り返す
() は()で囲まれたパターンをグループ化する 例: (hello)は hello-world や world-helloにマッチする
\1 は全体を抜き出したい正規表現に置き換える(キャプチャ)する

【使用例】

echo hello_world | sed -E 's/.\*(hello.).*/\1'
# 出力結果 
  hello

2. sedコマンドでマッチした箇所を取り除き、残った場所を取り除く

解読:
[ ]内の^ は否定を表す
* は直前のパターンを0回以上繰り返す
→ < XXXXX > のようなパターンを空白にする = <>で囲んでいる場所を削除

【使用例】

echo'<li class="pagingnumber">130/2098</li>' | sed -E 's/<[^>]*>//g'

3. cutコマンドを使って特定の文字で区切られた文字列からn番目を抜き出す

使用タイミング: csvから文字列を抜き出す時
解読:
'-d , -f 2' は 区切り文字, 区切られた文字列から2番目の項目

echo '1,野球,阪神' | cut -d , -f 2
# 出力結果
  野球

4. awkコマンドを使ってスペースで桁揃えされた文字列からn番目を抜き出す

スペースで桁ぞろえされていて、区切り文字が連続するときに使える。
(cutは区切り文字が連続するときには向いてない)
{print $n} という文字列を与えるとn番目の文字列を抜き出すことができる。

echo 'A B C D E' | awk '{print $4}'
# 出力結果
 D
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

フルヒトの自作ArchLinux備忘録 #1 インストール

Self-Introduction

初カキコ…ども…

俺みたいな中1でエロ見てる腐れ野郎、他に、いますかっていねーか、はは

今日のクラスの会話
あの流行りの曲かっこいい とか あの服ほしい とか
ま、それが普通ですわな

かたやワイは0と1の海で死体を見て、呟くんすわ
it’a true wolrd.狂ってる?それ、誉め言葉ね。

好きな音楽ジャンル 東方
尊敬する人間 博麗霊夢

なんつってる間に4時っすよ(笑) あ~あ、義務教育の辛いとこね、これ

What is ArchLinux?

ども・・・まぁArchLinuxはDebianやRHELとかと独立してる完全オリジナルのLinuxですね。
コンソールで適当にインストールしなきゃいけないのがクソなところです。

How to install

まず起動しましょう。起動しなきゃ意味がないです。
Enter押すか待ちましょう。
こうなったらインストール画面です(白目)
image.png

キーボードレイアウトの指定

日本語ですね!!!

キーボードレイアウトの設定
loadkeys jp106

多分これでおk

システムクロックの設定

多分ntpオンにします。
2036年大変なことになりそう()

システムクロックの設定
timedatectl set-ntp true

パーティションのホォーマット

これ個人差があるんですけどVirtualBoxでやってるのでただのsdaですね

パーティションのフォーマット
mkfs.ext4 /dev/sda

そしてファイルシステムのマウント

こちらもsda

パーティションのフォーマット
mount /dev/sda /mnt

いよいよインストールします!

ここまではただ単にArchLinuxのインストールガイドをパクってきただけです。
別のやつもパクりましょう!(おい)

カーネルなどのインストール
pacstrap /mnt base base-devel linux linux-firmware grub dosfstools efibootmgr netctl iw wpa_supplicant networkmanager dialog xfsprogs vim dhcpcd

baseやbase-develといったArch基本パッケージ、LinuxやLinux-firmwareのLinux基本カーネル。grubというブートローダー、Linux御用達のvim、あとは無線・有線LANのアプリケーションですね。

fstabの設定

ようわからんけど書いてあるので

fstabの生成
genfstab -U /mnt >> /mnt/etc/fstab

作業するところのrootを変更

debianとかだとchrootとかで片付けられると思うんですかこれarch-chrootらしいですね

chrootする
arch-chroot /mnt /bin/bash

TimeZoneの変更

いつものAsia/Tokyoですね。

TimeZoneの変更
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
時計のズレを調整
hwclock --systohc --utc

このあとdateコマンドなどで調整されたか見てみましょう

Localization

日本語とか英語とかのやつですね
英語は必須です。

生成

Localization
locale-gen

設定

pacstrapでインストしたvimとかで使用言語をコメントアウトします

/etc/locale.gen
#en_SG ISO-8859-1
en_US.UTF-8 UTF-8
#en_US ISO-8859-1
...
...
#ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8
#ka_GE.UTF-8 UTF-8

こっちは言語設定とかじゃないですかね

/etc/locale.conf
LANG=en_US.UTF-8

ホストの設定

名前を入力しましょう!

/etc/hostname
Furcht968
/etc/hosts
127.0.0.1   localhost
::1         localhost
127.0.1.1   Furcht968.localdomain   Furcht968

Initramfsでなんかする

暗号化的なのみたいです

Initramfs
mkinitcpio -p linux

パスワードの変更

そのまんま

パスワードの変更
passwd

ブートローダーインストール

ここは王道のGRUBですかね・・・・
pacstrapの時点でインストールされてるかと思います。

grubのインストール
grub-install --target=i386-pc /dev/sda --force
grub-mkconfig -o /boot/grub/grub.cfg

再起動

うん。そうですね。言わなくてもわかるかと思います

再起動
exit #chrootの終了 Ctrl-Dでも可能
shutdown -h now

インストール後についての設定

Part2書くのでそこに行ってもらえばと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

何度も蘇るプロセスを永遠に殺し続ける.sh

正直もっといい方法が絶対にあると思います。
が、備忘録として残します

時間を無駄にしたくない人のための要約

  • やったこと: PIDを取得して無限ループで永遠にkillする

やりたいこと

killしてもkillしても蘇る特定のプロセスをkillし続けたい。
プロセスはバックグラウンドで定期的に起動するもよう。
環境: macOS Catalina

まずはプロセス名を調べる

Applications > Utilitiesからアクティビティモニターを開いて、プロセス名を調べます。
process_mosaic.png

やってみる

内容の整理

プロセス名がわかったところで、やりたいことを整理します。
やりたいのは

  • killしてもすぐ蘇る特定のプロセスをkillし続ける

ということです。
ですので処理としては

  • ps aux | grep ProcessName でプロセスが実行されているか確認し、実行されていればkillする

というもので大丈夫そうです。それではスクリプトを書いていきます

実装

#!/bin/bash

while true;
do
    # ProcessNameには殺したいプロセスの名前を入れてください
    TARGETPID=`ps aux | grep ProcessName | grep -v grep | awk '{print $2}'`

    if [ -n "$TARGETPID" ]; then
        `kill -9 ${TARGETPID}`
    fi

    sleep 5
done

見ての通りただの無限ループです。(何となく5秒間隔にしてみた)

  • ps aux | grep ProcessName でプロセスを確認
  • grep -v grep で自分自身の結果は除外
  • awk '{print $2}' でPIDのみ抽出
  • ↑の結果を一旦変数に格納、空じゃなければkillする

ということをしています。
5秒おきにしてますが、1秒おきとかインターバルおかないとかでも、これぐらいの処理なら別にいいと思います

Operation Not Permitted

killしようとするとこのメッセージが表示される場合がありました。
そんな場合は一旦sudoでkillを試せばいいかもしれません。(sudo kill or sudo kill -9)

#PIDには殺したいプロセスのIDを入れてください

sudo kill PID
#もしくは
sudo kill -9 PID

それでも無理ならmacのrootユーザーでログインしなおして、そのユーザーで実行すればkillできるのかも......(確認してないので何とも言えない)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

libusbを参照する共有ライブラリでビルドエラーが出た話

ことの起こり

ubuntuでlibusbを使うプログラムを作成中

$ gcc -c testUsb.c
$ gcc testUsb.o testUsb -lusb

普通はこんな感じでビルドできると思うんですが、
これを実行ファイルではなく共有ライブラリ(.so)にしようと思ったらビルドエラーが出るのですね。

$ gcc -c testUsb.c
$ gcc -shared -fPIC testUsb.o -o libTestUsb.so -lusb
/usr/bin/ld: testUsb.o: relocation R_X86_64_PC32 against symbol `devInfo' can not be used when making a shared object。 -fPIC を付けて再コンパイルしてください。
/usr/bin/ld: 最終リンクに失敗しました: bad value
collect2: error: ld returned 1 exit status

なんですかこれ。初めて見ました。

調べてみる

エラーの内容としては「libusb が -fPIC つけてビルドされてないんで、この文脈では使えませんよ。使いたいなら libusb を -fPIC つけてビルドしなおしてください」って意味かな。

いやいや、こんなことで libusb ビルドしなおしとかそりゃないでしょう。

え? これで解決?

色々試してみたのだけど、ことごとく失敗だったので(libusb の再ビルドはしない方向で、、)あまりここで細かく書く必要はないと思うのだけど、最終的に解決したのは以下のようにビルド。

$ gcc -shared -fPIC testUsb.c -o libTestUsb.so -lusb

.o ファイルを作らないで、.c ファイルから直接コンパイル&リンク。
これでエラーが起きずにちゃんと動作する .so ファイルができたのだけど、.o ファイルを生成する場合と何が違うんだっけ。。

普段なんとなくやっちゃってることを正しく理解できてないなぁ、、
今度はこれでなぜうまくいくのかを調べないと。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

デバッグ実行時にsudoを付ける方法

事象

Visual Studio CodeでPythonをデバッグ実行したときに、[Errno 13] Permission deniedが発生した。

image.png

原因

対象Pythonコードに管理者権限が必要だったが、Visual Studio Codeのデバッグ実行時にsudoが付いていないため。(あたりまえ)

対処方法

launch.jsonに"sudo": trueを追記すればOK。

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

データベース自動起動設定 linux

CentOs 7

自動起動確認
systemctl is-enabled mariadb
systemctl is-enabled httpd

自動起動有効化
systemctl enabled mariadb
systemctl enabled httpd

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Raspberry Pi 4 Model B で USB ブート(3) LVM 編

Raspberry Pi 4 Model B で USB ブート(2) パーティション作成編」では USB マスストレージに基本パーティションを作成し、ext4 でフォーマットをして Raspberry Pi OS をそのままコピーした。
ところで、よくある x86 用の Linux ディストリビューションではインストール時に LVM を選択できる。Raspberry Pi 4 でも LVM を利用することは可能だ。
root パーティションで LVM を使うこともできる。ただし起動には initramfs を使う必要がある。

なお、前回までは(特に明記はしていなかったけれど)USB マスストレージへのインストールを PC で行っていたが、この方法だと initramfs を作成できないため、今回は microSD にインストールした Raspberry Pi OS から作業する。
これに伴い対象となるデバイスが /dev/sdb から dev/sda になるので注意。

LVM 作成

パーティションを作成するところは前回と同じ。

$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
:
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          526335   256.0 MiB   0700
   2          526336      5860533134   2.7 TiB     8300

2 つめのパーティションに LVM を作成する。
名前は pi-vg とするが、他の名前にしてもいい。

# LVM 物理ボリュームを作成
$ sudo pvcreate /dev/sda2

# ボリュームグループ pi-vg を作成
$ sudo vgcreate pi-vg /dev/sda2

# 論理ボリュームを作成
# 今回使用した USB マスストレージの容量は 3TB。
# swap に 8GB 割り当てることを想定し、/ の容量は総容量から逆算している
$ sudo lvcreate --size 2786G --name root pi-vg
$ sudo lvcreate -l 100%FREE --name swap pi-vg

# 現時点のHDDの状態を確認
$ lsblk /dev/sda
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  2.7T  0 disk 
├─sda1            8:1    0  256M  0 part 
└─sda2            8:2    0  2.7T  0 part 
  ├─pi--vg-root 254:0    0  2.7T  0 lvm  
  └─pi--vg-swap 254:1    0  8.3G  0 lvm  

使用した USB マスストレージは HDD であり、データーの書き込みによるデバイスの劣化を心配する必要はないため、swap パーティションを作成した。
swap のサイズを決めるにあたっては以下の情報を参考にし、メモリとほぼ同じ容量を確保した。

作成した boot, root, swap をフォーマットする。

$ sudo mkfs -t vfat /dev/sda1
$ sudo mkfs -t ext4 /dev/pi-vg/root
$ sudo mkswap       /dev/pi-vg/swap

システムファイルのコピー

  • microSD にインストールイメージをコピーしておく
  • 起動した Raspberry Pi OS 上でインストールイメージをダウンロードする

などをすれば前回までと同じ方法でコピーができるが、ここではこの手間を省き、起動に使用した microSD からコピーをすることにする。

$ mkdir /tmp/root
$ sudo mount /dev/pi-vg/root /tmp/root/

# 実ファイルシステムではない devtmpfs, sysfs, proc, tmpfs, boot と
# ext4 フォーマット時に作成される lost+found 以外のディレクトリをコピー
$ cd /
$ sudo cp -a bin etc home lib media mnt opt root sbin srv tmp usr var /tmp/root/
$ cd /tmp/root/
$ sudo mkdir dev sys proc run boot tmp

# 後述の initramfs を作成するために、boot パーティションは /tmp/root 以下にマウントする
$ sudo mount /dev/sda1 /tmp/root/boot/
$ sudo cp -a /boot/* /tmp/root/boot/

起動設定の変更

cmdline.txtfstab を更新する。
パーティション情報だけでなく、initramfs に関するオプションも指定する。

# root= に /dev/pi-vg/root を指定
# initramfs を使用するために initrd=0x01f00000 を追加する
# 起動に失敗する場合は quiet を削除すると、起動中のメッセージが画面に表示されるので原因を特定しやすくなる
# デバッグには break オプションも有用。詳しくは initramfs-tools(7) を参照
$ cat /tmp/root/boot/cmdline.txt
console=serial0,115200 console=tty1 root=/dev/pi-vg/root initrd=0x01f00000 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

# 前回までと同じく、boot パーティションの PARTUUID を blkid コマンドで調べ指定
# SSD の場合はデバイスの劣化を防ぐために、/dev/pi-vg/root の defaults には "defaults,noatime" を指定する
$ cat /tmp/root/etc/fstab
proc            /proc           proc    defaults          0       0
PARTUUID=09468d30-111e-4028-8f37-16f65e497c25  /boot           vfat    defaults          0       2
/dev/pi-vg/root  /               ext4    defaults  0       1
/dev/pi-vg/swap  none            swap    sw  0       0

initramfs

boot パーティションに initrd.gz を作成し、起動時にこれを使うようにする。

# /tmp/root 以下でコマンドを実行できるよう、各種ディレクトリを /tmp/root 以下にマウント
$ sudo mount --bind /sys  /tmp/root/sys
$ sudo mount --bind /proc /tmp/root/proc
$ sudo mount --bind /dev  /tmp/root/dev

# /tmp/root/boot に initrd.gz を作成
$ sudo chroot /tmp/root/ apt install lvm2
$ sudo chroot /tmp/root/ mkinitramfs -o /boot/initrd.gz

# boot/config.txt に "initramfs initrd.img followkernel" を追加
$ cat /tmp/root/boot/config.txt
:
initramfs initrd.gz 0x01f00000

冒頭で、PC で作業をすると initramfs を作成できない旨を書いたが、それはここでの apt install lvm2 がうまく行かないため。
lvm2 パッケージのインストール後に initramfs を作成する処理が走るが、このときに正しいカーネルのバージョンが取得できないのが原因と思われる(詳細は追っていないので要確認)。

## 後始末
$ sudo umount /tmp/root/sys /tmp/root/proc /tmp/root/dev
$ sudo umount /tmp/root/boot
$ sudo umount /tmp/root

これでインストールは完了。
Raspberry Pi OS をシャットダウンし、microSD を抜き取ってから電源を入れれば USB マスストレージから起動できる。

おまけ

手順が多くなってきたので、インストーラーを作ってみた。

https://github.com/nowlinuxing/rpi4-installer


  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Zabbixで死活監視

はじめに

Zabbix4.4で死活監視の設定・動作確認をする手順について説明する。
ここではZabbixでの細かい設定については省略している。

環境

  • ホストOS:Windows10
  • ゲストOS:CentOS7 × 2台
    • 監視用サーバ :ホスト名 zabbix(IPアドレス:192.168.33.10)
    • 監視対象サーバ:ホスト名 webserver(IPアドレス:192.168.33.20)
  • 仮想マシン構築方法:VirtualBox, Vagrant

手順(概要)

  1. Zabbixで監視対象のホストを追加する
  2. Zabbixで監視対象のホストにテンプレートを適用する
  3. Zabbixで障害発生時の通知先メールアドレスを設定する
  4. 動作確認(Zabbix管理画面、メール通知)

手順(詳細)

1. Zabbixで監視対象のホストを追加する

Zabbixのホストとは監視する対象を示す。
Zabbixでは、ホストは少なくとも1つのホストグループに属す必要があるためグループを作成しホストを所属させる。

Zabbixの[設定]→[ホスト]から、監視対象サーバ webserver(192.168.33.20) を追加する。

2. Zabbixで監視対象のホストにテンプレートを適用する

「テンプレート」とは、監視に必要な条件やルールなどをまとめて定義したものである。
Zabbixには標準でいくつものテンプレートが用意されている。もちろん個々にカスタマイズしたテンプレートを作成することも可能。

今回は、標準で用意されている死活監視に最適なテンプレート「Template Module ICMP Ping」をwebserberに適用する。
image.png

3. Zabbixで障害発生時の通知先メールアドレスを設定する

[管理]→[メディアタイプ]から通知したいメールアドレスを設定する。
今回はGmailを設定した。
※Gmailを設定する場合は、Gmail側で「信頼性の低いアプリ」からのアクセスを有効にしないとメール通知がされません。セキュリティ上、動作確認が済んだら元に戻すことを推奨する。

image.png

[設定]→[アクション]で、メール通知する場合の実行条件を設定する。
今回は、「トリガーの深刻度」が「重度の障害」以上の場合にメール通知がされるように設定した。
image.png

4. 動作確認(Zabbix管理画面、メール通知)

Zabbix側の設定が完了したら、わざとwebserverをシャットダウンして障害発生の状況を作る。
つまり、監視サーバzabbixから監視対象サーバwebserverへの疎通ができない(ping応答がない)状態である。

Zabbixで障害が発生していることを確認

[監視データ]→[障害]を確認してみる。
ステータスが「障害」になっており、メール通知のアクションが正常に動作していることが確認できた。
image.png

Gmailに障害発生メールが通知されることを確認

Gmailを確認してみると、ちゃんと障害発生メールが届いていることを確認できた。

image.png

まとめ

以下のことを自分でやってみると、ITインフラの構築・運用のイメージがつかめて勉強になる。
仮想マシンの構築 → 監視サーバの構築・監視設定 → 障害発生の動作確認

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

監視サーバZabbixでLinux(CentOS7)の死活監視(Ping)をやってみた

はじめに

Zabbix4.4で死活監視の設定・動作確認をする手順について説明する。
ここではZabbixでの細かい設定については省略している。

環境

  • ホストOS:Windows10
  • ゲストOS:CentOS7 × 2台
    • 監視用サーバ :ホスト名 zabbix(IPアドレス:192.168.33.10)
    • 監視対象サーバ:ホスト名 webserver(IPアドレス:192.168.33.20)
  • 仮想マシン構築方法:VirtualBox, Vagrant

手順(概要)

  1. Zabbixで監視対象のホストを追加する
  2. Zabbixで監視対象のホストにテンプレートを適用する
  3. Zabbixで障害発生時の通知先メールアドレスを設定する
  4. 動作確認(Zabbix管理画面、メール通知)

手順(詳細)

1. Zabbixで監視対象のホストを追加する

Zabbixのホストとは監視する対象を示す。
Zabbixでは、ホストは少なくとも1つのホストグループに属す必要があるためグループを作成しホストを所属させる。

Zabbixの[設定]→[ホスト]から、監視対象サーバ webserver(192.168.33.20) を追加する。

2. Zabbixで監視対象のホストにテンプレートを適用する

「テンプレート」とは、監視に必要な条件やルールなどをまとめて定義したものである。
Zabbixには標準でいくつものテンプレートが用意されている。もちろん個々にカスタマイズしたテンプレートを作成することも可能。

今回は、標準で用意されている死活監視に最適なテンプレート「Template Module ICMP Ping」をwebserverに適用する。
image.png

3. Zabbixで障害発生時の通知先メールアドレスを設定する

[管理]→[メディアタイプ]から通知したいメールアドレスを設定する。
今回はGmailを設定した。
※Gmailを設定する場合は、Gmail側で「信頼性の低いアプリ」からのアクセスを有効にしないとメール通知がされない。セキュリティ上、動作確認が済んだら元に戻すことを推奨する。

image.png

[設定]→[アクション]で、メール通知する場合の実行条件を設定する。
今回は、「トリガーの深刻度」が「重度の障害」以上の場合にメール通知がされるように設定した。
image.png

4. 動作確認(Zabbix管理画面、メール通知)

Zabbix側の設定が完了したら、わざとwebserverをシャットダウンして障害発生の状況を作る。
つまり、監視サーバzabbixから監視対象サーバwebserverへの疎通ができない(ping応答がない)状態である。

Zabbixで障害が発生していることを確認

[監視データ]→[障害]を確認してみる。
ステータスが「障害」になっており、メール通知のアクションが正常に動作していることが確認できた。
image.png

Gmailに障害発生メールが通知されることを確認

Gmailを確認してみると、ちゃんと障害発生メールが届いていることを確認できた。

image.png

まとめ

以下のことを自分でやってみると、ITインフラの構築・運用のイメージがつかめて勉強になる。
仮想マシンの構築 → 監視サーバの構築・監視設定 → 障害発生の動作確認

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む