isLandcenter 非番中

ブログトップ | ログイン

カテゴリ:SUSE( 286 )

dstat は vmstat, iostat, netstat などの stat 系管理ツールをまとめた、多用途管理ツールです。

SESE Linux(SLE/openSUSE)15 ではデフォルトでインストールされていないので、 yast > software > Software Manegement から検索するか、 software.opensuse.org から検索して、1クリックインストールします。

SUSE Linux の stat 系管理ツール多用途ツールdstat を使ってみる_a0056607_14164159.png



Seagate BarraCuda 3.5" 2TB 内蔵ハードディスク HDD 2年保証 6Gb/s 256MB 7200rpm 正規代理店品 ST2000DM008

新品価格
¥6,566から
(2020/1/19 14:36時点)



Anker PowerCore 10000 (モバイルバッテリー 10000mAh 最小最軽量 大容量)【PSE認証済/PowerIQ搭載】 iPhone&Android対応 *2019年12月時点 (ブラック)

新品価格
¥2,799から
(2020/1/20 12:36時点)

- まずは動かしてみる -

まず使ってみます。デフォルトで1秒間隔でステータスを返してくれます。

sle15:~ # dstat
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
5 1 89 5 0| 52k 996k| 0 0 | 13B 298B|1335 3784
4 1 92 3 0|4096B 520k| 85k 86k| 0 0 |1373 3876
6 1 89 4 0|4096B 348k| 109k 112k| 0 0 |1500 4161
5 1 91 4 0|4096B 524k| 65k 66k| 0 0 |1312 3726
5 1 91 3 0|8192B 413k| 109k 112k| 0 0 |1412 4268
11 1 85 2 0|4096B 156k| 158k 162k| 0 0 |1517 3951
5 2 80 13 0| 0 1224k| 105k 106k| 0 0 |1498 4045
4 1 90 5 0| 0 3384k| 72k 72k| 0 0 |1327 3942
5 1 92 2 0| 0 224k| 112k 113k| 0 0 |1405 4070
5 1 91 3 0|8192B 780k| 90k 90k| 0 0 |1342 3978 ^C
sle15:~ #

ー help を見てみる ー

Help で使い方を調べてみます。

sle15:~ # dstat --help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics

Dstat options:
-c, --cpu enable cpu stats
-C 0,3,total include cpu0, cpu3 and total
-d, --disk enable disk stats
-D total,hda include hda and total
-g, --page enable page stats
-i, --int enable interrupt stats
-I 5,eth2 include int5 and interrupt used by eth2
-l, --load enable load stats
-m, --mem enable memory stats
-n, --net enable network stats
-N eth1,total include eth1 and total
-p, --proc enable process stats
-r, --io enable io stats (I/O requests completed)
-s, --swap enable swap stats
-S swap1,total include swap1 and total
-t, --time enable time/date output
-T, --epoch enable time counter (seconds since epoch)
-y, --sys enable system stats

--aio enable aio stats
--fs, --filesystem enable fs stats
--ipc enable ipc stats
--lock enable lock stats
--raw enable raw stats
--socket enable socket stats
--tcp enable tcp stats
--udp enable udp stats
--unix enable unix stats
--vm enable vm stats
--vm-adv enable advanced vm stats
--zones enable zoneinfo stats

--list list all available plugins
--<plugin-name> enable external plugin by name (see --list)

-a, --all equals -cdngy (default)
-f, --full automatically expand -C, -D, -I, -N and -S lists
-v, --vmstat equals -pmgdsc -D total

--bits force bits for values expressed in bytes
--float force float values on screen
--integer force integer values on screen

--bw, --black-on-white change colors for white background terminal
--color force colors
--nocolor disable colors
--noheaders disable repetitive headers
--noupdate disable intermediate updates
-o, --output file write CSV output to file
--profile show profiling statistics when exiting dstat
-V, --version show version and system info
--debug 1,2,3 debug mode

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)

sle15:~ #


- とりあえず全部見る dstat -af -

-af オプションですべてのステータスを見てみます。ディスクの数が多いと、画面に収まり切りません。

sle15:~ # dstat -af
--total-cpu-usage-- --dsk/sr0-----dsk/vda-- --net/eth0- ---paging-- ---system--
usr sys idl wai stl| read writ: read writ| recv send| in out | int csw
1 0 93 5 0| 1B 0 :7910B 535k| 0 0 | 3B 22B| 192 411
1 0 91 7 0| 0 0 : 0 190k| 560B 270B| 0 0 | 212 337
1 0 89 10 0| 0 0 : 0 692k|3206B 716B| 0 0 | 236 520
1 1 72 25 1| 0 0 : 0 2500k| 518B 1756B| 0 0 | 176 495
0 0 98 2 0| 0 0 : 0 873k| 728B 784B| 0 0 | 193 383
6 2 84 8 0| 0 0 : 112k 1010k| 660B 566B| 0 0 | 290 773 ^C
sle15:~ #


- インターバルを指定する n -

デフォルトインターバルを3秒に設定してみました。

sle15:~ # dstat 3
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
5 1 89 5 0| 52k 996k| 0 0 | 13B 298B|1335 3784
5 2 91 3 0|2731B 391k| 51k 51k| 0 0 |1331 3851
5 1 90 4 0|1365B 504k| 76k 76k| 0 0 |1349 4053
5 1 86 7 0|5461B 639k| 75k 75k| 0 0 |1475 3987
5 1 89 5 0|4096B 358k| 93k 93k| 0 0 |1380 4637 ^C
sle15:~ #

- vmstat の互換モードで表示する -v -

-v を付けると vmstat と同じフォーマットで出てきます。

sle15:~ # dstat -v
---procs--- ------memory-usage----- ---paging-- -dsk/total- ---system-- --total-cpu-usage--
run blk new| used free buff cach| in out | read writ| int csw |usr sys idl wai stl
0 1.0 0.5|9332M 161M 1080k 5185M| 13B 298B| 52k 996k|1335 3784 | 5 1 89 5 0
3.0 1.0 0|9332M 161M 1080k 5185M| 0 0 |4096B 1804k|1227 3773 | 4 1 91 3 0
0 2.0 0|9332M 161M 1080k 5185M| 0 0 |4096B 1260k|1423 3547 | 4 1 80 15 0
1.0 0 0|9332M 161M 1080k 5185M| 0 0 | 0 1220k|1535 3744 | 5 1 70 24 0
2.0 1.0 0|9332M 161M 1080k 5185M| 0 0 | 0 364k|1213 3266 | 4 1 92 3 0
1.0 0 0|9332M 161M 1080k 5185M| 0 0 | 0 184k|1264 3916 | 5 2 90 4 0
0 1.0 0|9332M 161M 1080k 5185M| 0 0 | 0 412k|1276 3595 | 5 1 90 4 0^C
sle15:~ #

ー cpu, disk, network のみ表示する ー

-cdn オプションは、それぞれ cpu, Network, Disk のステータスを返してきます。

sle15:~ # dstat -cdn
--total-cpu-usage-- -dsk/total- -net/total-
usr sys idl wai stl| read writ| recv send
5 1 89 5 0| 52k 996k| 0 0
5 1 92 2 0|4096B 212k| 170k 174k
6 4 90 0 0|4096B 180k| 60k 60k
12 2 84 2 0|4096B 196k| 87k 87k
5 1 92 2 0|4096B 284k| 87k 88k
5 1 92 2 0|4096B 188k| 73k 73k
4 1 92 2 0|4096B 196k| 67k 67k
5 1 93 2 0|4096B 212k| 74k 74k^C
sle15:~ #

ー 表示結果に時刻を付ける ー

-t オプションで、収集した時刻を付けてくれます。


sle15:~ # dstat -tcdn
----system---- --total-cpu-usage-- -dsk/total- -net/total-
time |usr sys idl wai stl| read writ| recv send
17-01 14:12:39| 5 1 89 5 0| 52k 996k| 0 0
17-01 14:12:40| 4 1 93 2 0| 0 176k| 266B 420B
17-01 14:12:41| 5 0 91 4 0| 0 412k|2432B 6838B
17-01 14:12:42| 4 1 91 4 0| 0 968k|2127B 2163B
17-01 14:12:43| 5 1 87 7 0|4096B 780k| 106B 228B
17-01 14:12:44| 5 1 91 3 0| 0 256k|1326B 2622B
17-01 14:12:45| 4 1 91 4 0| 0 280k| 408B 784B
17-01 14:12:46| 5 1 92 2 0| 0 188k| 638B 1096B^C

ー 結果を csv ファイルに書き出す ー

--output FileName で結果をテキスト化してくれます。これはこれで便利そう。

sle15:~ # dstat -v --output dstat.csv
---procs--- ------memory-usage----- ---paging-- -dsk/total- ---system-- --total-cpu-usage--
run blk new| used free buff cach| in out | read writ| int csw |usr sys idl wai stl
0 1.0 0.5|9326M 155M 1080k 5198M| 13B 301B| 52k 996k|1335 3784 | 5 1 89 5 0
1.0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 396k|1460 4840 | 7 5 86 2 0
0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 460k|1454 3902 | 11 3 82 3 0
0 0 0|9326M 155M 1080k 5198M| 0 0 | 12k 188k|1521 4287 | 12 1 84 2 0
0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 3052k|1809 3747 | 5 1 88 5 0
1.0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 424k|1346 3628 | 5 1 90 4 0
0 1.0 0|9326M 155M 1080k 5198M| 0 0 |4096B 260k|1249 3593 | 5 1 92 2 0
0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 288k|1229 3657 | 4 2 89 5 0
2.0 0 0|9326M 155M 1080k 5198M| 0 0 |8192B 268k|1236 3578 | 5 1 90 4 0
0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 284k|1247 3440 | 5 1 91 2 0
0 0 0|9326M 155M 1080k 5198M| 0 0 |4096B 345k|1414 3987 | 7 2 88 4 0^C
sle15:~ #









by islandcenter | 2020-01-19 14:37 | SUSE | Comments(0)

SUSE Linux でよく使う、忘れやすい使えるコマンド

普段よく使うのに、毎日は使わないので、ついつい引数やオプションを間違えてしまうったり、使い方を忘れるコマンド、よく使うケースをまとめてみました。
ダメですね。最近物忘れがひどい。本当に「ダメ人間」です。お前、何年やってんだって言われそうです。


- ps と kill -

プロセスを止めるためによく使います。例えば、Firefox ブラウザが調子悪い時

sle15:~ # firefox &
[1] 20876
sle15:~ # ps aux | grep firefox
root 20876 13.5 1.4 2105552 232876 pts/5 Sl 11:39 0:04 /usr/lib64/firefox/firefox
root 20989 0.0 0.0 7432 828 pts/5 S+ 11:40 0:00 grep --color=auto firefox
sle15:~ # kill 20876
sle15:~ # ps aux | grep firefox
root 21004 0.0 0.0 7432 988 pts/5 S+ 11:41 0:00 grep --color=auto firefox

Firefox がプロセスの一覧から消えました。

ただし単純なユーザアプリケーションの場合はこれでもいいのですが、サービスデーモンの場合は、もっと慎重にやるべきです。
結局、「再起動したら治った」ケースも良くあります。


- ファイルを探す find -

アプリケーションや、サービスの設定ファイルを探すためによく使います。 SUSE Linux の場合、ほとんど YaST ツールで設定するのが無難なのですが、時折、「xxx.conf ってどこ?」という SUSE ならではの場合があります。そんな時に使います。

sle15:~ # find /etc -name hosts <- /etc 以下の hosts というファイル
/etc/hosts
sle15:~ # find /etc -name "host*" <- host...で始まるすべてのファイル、" " で括ります。
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/hosts.equiv
/etc/hosts.lpd
/etc/wicked/extensions/hostname
/etc/hosts.YaST2save
sle15:~ #

sle15:~ # find /etc -name "*host*" <-- hostが含まれるすべてのファイル
/etc/opt/chrome/native-messaging-hosts
/etc/dbus-1/system.d/org.freedesktop.hostname1.conf
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow

:中略

/etc/nginx/vhosts.d
sle15:~ #



- ファイルの日付を調べる stat, find -atime -

普段、あまり使わないのですが、ファイルの更新日付や最終アクセス日を確認するために使います。stat へぇーでした。
find の方が実用的なケースが多いでしょう。

sle15:~ # touch /home/user/test.txt

sle15:~ # ls -al /home/user/test.txt
-rw-r--r-- 1 root root 0 Jan 12 12:16 /home/user/test.txt

sle15:~ # cat /home/user/test.txt <-- cat してみる
sle15:~ # stat /home/user/test.txt
File: /home/user/test.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 35h/53d Inode: 278 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-12 12:16:53.934678002 +0900 <---cat したのでアクセス時間だけ微妙に違う
Modify: 2020-01-12 12:16:37.529088236 +0900
Change: 2020-01-12 12:16:37.529088236 +0900
Birth: -

また、長期間アクセスがないファイルを探すには find コマンドに -atime オプションを使います。
例えば 365 日、アクセスが無いファイルを探すには次の様に実行します。

sle15:~ # find /share/SISO/ -atime +365
/share/SISO/rhel/rhel-server-5.9-x86_64-dvd.iso
/share/SISO/rhel/rhel-server-6.8-x86_64-boot.iso
/share/SISO/rhel/rhel-server-6.8-x86_64-dvd.iso
/share/SISO/rhel/rhel-server-7.3-x86_64-boot.iso
/share/SISO/rhel/rhel-server-7.3-x86_64-dvd.iso

:以下略

※ ただし、バックアップジョブなどで、日々アクセスされているとアクセス日も更新されます。ちょっと向いていないかも知れません。
ただ、最終更新日を見つけるには -ctime オプションの方がいい様です。


- ログの最後を確認 tail, less -

sle15:~ # rcntpd restart <-- サービスをリスタートしてみる

sle15:~ # tail /var/log/messages <-- tail のデフォルトは10行表示
2020-01-15T10:17:27.156734+09:00 sle15 snmpd[1598]: Connection from UDP: [192.168.1.221]:58800->[192.168.1.240]:161
2020-01-15T10:17:42.856286+09:00 sle15 systemd[1]: Stopping NTP Server Daemon...
2020-01-15T10:17:42.934525+09:00 sle15 systemd[1]: Stopped NTP Server Daemon.
2020-01-15T10:17:42.935309+09:00 sle15 systemd[1]: Starting NTP Server Daemon...
2020-01-15T10:17:43.000095+09:00 sle15 ntpd[10995]: ntpd 4.2.8p11@1.3728-o (1): Starting
2020-01-15T10:17:43.000354+09:00 sle15 ntpd[10995]: Command line: /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -c /etc/ntp.conf
2020-01-15T10:17:43.007380+09:00 sle15 ntpd[10996]: proto: precision = 0.072 usec (-24)
2020-01-15T10:17:43.030409+09:00 sle15 ntpd[10996]: switching logging to file /var/log/ntp
2020-01-15T10:17:43.037980+09:00 sle15 start-ntpd[10990]: Starting network time protocol daemon (NTPD)
2020-01-15T10:17:43.038376+09:00 sle15 systemd[1]: Started NTP Server Daemon.

sle15:~ # tail /var/log/messages -n 5 <--- -n [数字] で「数」行分表示
2020-01-15T10:17:43.000354+09:00 sle15 ntpd[10995]: Command line: /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -c /etc/ntp.conf
2020-01-15T10:17:43.007380+09:00 sle15 ntpd[10996]: proto: precision = 0.072 usec (-24)
2020-01-15T10:17:43.030409+09:00 sle15 ntpd[10996]: switching logging to file /var/log/ntp
2020-01-15T10:17:43.037980+09:00 sle15 start-ntpd[10990]: Starting network time protocol daemon (NTPD)
2020-01-15T10:17:43.038376+09:00 sle15 systemd[1]: Started NTP Server Daemon.
sle15:~ #


less は表示画面をカーソルキーでスクロールできるので、便利ですね。意外と知らなかったりします。

sle15:~ # less /var/log/messages <---- ファイルを開いたら "G" (shift+g)か ”>” で行末に移動します。終了する時は "q" で抜けます。

SUSE Linux でよく使う忘れやすい使えるコマンド_a0056607_19065358.png


応用して、最近発生した error だけ grep して抜き出します。

sle15:~ # tail -n 10000 /var/log/messages | grep fail <-- 10000 行の中から "fail" の文字列を抜き出す。

2020-01-13T00:00:02.249817+09:00 sle15 logrotate[9676]: error: stat of /var/log/chrony/*.log failed: Permission denied
2020-01-13T00:00:02.292435+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.
2020-01-13T20:52:32.361748+09:00 sle15 smartd[906]: Device: /dev/sdd [SAT], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 75 to 76
2020-01-14T00:00:01.960473+09:00 sle15 logrotate[18671]: error: stat of /var/log/chrony/*.log failed: Permission denied
2020-01-14T00:00:02.031651+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.
2020-01-15T00:00:00.252361+09:00 sle15 logrotate[24918]: error: stat of /var/log/chrony/*.log failed: Permission denied
2020-01-15T00:00:00.272513+09:00 sle15 systemd[1]: logrotate.service: Unit entered failed state.



- 即時時刻合わせ ntpdate -ub ntp.server -

普段 ntpd で、外部のタイムソースと同期している場合、あまり使う事がないかもしれません。
で、時刻のズレがある場合に慌ててしまうのですね。

sle15:~ # ntpdate -q ntp.nict.jp <-- 同期状態を -q オプションで確認する
server 133.243.238.163, stratum 1, offset 0.096820, delay 0.16020
server 133.243.238.164, stratum 1, offset 0.098111, delay 0.16058
server 133.243.238.244, stratum 1, offset -0.000385, delay 0.23285
server 133.243.238.243, stratum 1, offset 0.009039, delay 0.21541
15 Jan 10:46:29 ntpdate[12177]: adjust time server 133.243.238.163 offset 0.096820 sec
<-- ほぼ合っている

sle15:~ # date
Wed Jan 15 10:46:33 JST 2020

sle15:~ # date -s "10:40" <-- 強制的に時刻を変えてみた
Wed Jan 15 10:40:00 JST 2020

sle15:~ # ntpdate -q ntp.nict.jp
server 133.243.238.163, stratum 1, offset 415.140090, delay 0.15050
server 133.243.238.164, stratum 1, offset 415.205100, delay 0.14244
server 133.243.238.244, stratum 1, offset 415.079092, delay 0.23996
server 133.243.238.243, stratum 1, offset 415.208039, delay 0.16280
15 Jan 10:40:13 ntpdate[12256]: step time server 133.243.238.164 offset 415.205100 sec <--- 時刻ずれが発生している。

sle15:~ # ntpdate ntp.nict.jp
15 Jan 10:40:25 ntpdate[12259]: the NTP socket is in use, exiting <-- ntpdでソケットが使われているよ


sle15:~ # ntpdate -ub ntp.nict.jp
15 Jan 10:47:33 ntpdate[12264]: step time server 133.243.238.163 offset 415.208919 sec <-- -u: 非特権モード -b:Step モード(即時同期)で時刻合わせをしてみた

※ 本来はアプリケーションの動作に影響する step モードで変更すべきではありません。
Slew モード(徐々に合わせる方法)で修正します。 -B オプションを使います。

【 ntpdate 】コマンド――時刻をNTPサーバと同期する

sle15:~ # date
Wed Jan 15 10:47:39 JST 2020

sle15:~ # ntpdate -q ntp.nict.jp
server 133.243.238.163, stratum 1, offset -0.019178, delay 0.10196
server 133.243.238.164, stratum 1, offset -0.055371, delay 0.17729
server 133.243.238.244, stratum 1, offset -0.054022, delay 0.17772
server 133.243.238.243, stratum 1, offset 0.011321, delay 0.14583
15 Jan 10:47:55 ntpdate[12363]: adjust time server 133.243.238.164 offset -0.055371 sec <-- 大体合っている
 

- ディスクの占有量を調べる df -h と du, ncdu -

何だか動きが妖しいな、という時は、意外とディスクの容量不足が原因だったりします。その場合、犯人捜しにつかえるのが df と du です。

sle15:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 50G 30G 20G 60% /
udev 3.8G 316K 3.8G 1% /dev
tmpfs 3.8G 6.4M 3.8G 1% /dev/shm
/dev/sda6 164M 24M 140M 15% /boot/efi
/dev/sda9 493G 385G 84G 83% /var
/dev/sda3 48G 19G 30G 39% /windows/C
/dev/sda4 98G 107M 98G 1% /windows/D
/dev/sda11 148G 94G 48G 67% /share
/dev/sdb2 1.8T 1.7T 4.2G 100% /hdd/sdb

sle15:~ # du /home
4 /home/user/bin
4 /home/user/.fonts
4 /home/user/.mozilla
68 /home/user
72 /home/

sle15:~ # du /home -m
1 /home/user/bin
1 /home/user/.fonts
1 /home/user/.mozilla
1 /home/user
1 /home/
sle15:~ #

-m を付けると M byte 表記になります。

メニュー形式で便利な ncdu も便利です。ぜひインストールして置きたい。

SUSE Linux でよく使う忘れやすい使えるコマンド_a0056607_19075830.png



ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncdu
https://islandcnt.exblog.jp/239841590/



- tar でのファイルのアーカイブとリストア -

tar は、お馴染みのコマンドですが、奥が深い。つい使い方をググってしまうのが、tar のコマンドラインオプションです。

ここでは、圧縮アーカイブと、アーカイブからあの解凍という「一発芸」の使い方のみ取り上げてみました。

user@sle15:~> tar czf mypics.tar.gz ./pics <--指定したディレクトリをアーカイブ
user@sle15:~> ls *.gz
mypics.tar.gz
user@sle15:~> mv pics deleteme <-- オリジナルのディレクトリを削除(リネーム)してみた
user@sle15:~> tar xzf mypics.tar.gz <-- 解凍してみる
user@sle15:~> ls
bin deleteme mypics.tar.gz pics public_html test test.txt <-- オリジナルのディレクトリを作成し解凍された。
user@sle15:~>

※ 通常ではは v オプションを付けて、圧縮、解凍の進捗を表示させて「ヤッテル感」を実感したい人が多いでしょうね。私もそうしています。

# tar cvzf myarchive.tar.gz path-to-source アーカイブ作成
# tar xvzf myarchive.tar.gzアーカイブ抽出

します。

- シンボリックリンクを作る ls -s -

以外とよく使うのに、いざ使おうとすると、使い方を忘れるのが ln -s コマンドです。リンク先とシンボリックリンク名を逆にしてハマったりします。

# ln -s リンクソース(先) リンクファイル名

user@sle15:~> ls -l
total 0
drwxr-xr-x 1 user users 0 Feb 20 2019 bin
drwxr-xr-x 1 user users 2064 Jan 15 12:57 pics
drwxr-xr-x 1 user users 20 Feb 20 2019 public_html
drwxr-xr-x 1 user users 8 Jan 15 13:40 test
-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txt

user@sle15:~> ls ./test
pics
user@sle15:~> ln -s ./test/pics/ mypic
user@sle15:~> ls -l
total 4
drwxr-xr-x 1 user users 0 Feb 20 2019 bin
lrwxrwxrwx 1 user users 12 Jan 15 13:46 mypic -> ./test/pics/ <--- これ
drwxr-xr-x 1 user users 2064 Jan 15 12:57 pics
drwxr-xr-x 1 user users 20 Feb 20 2019 public_html
drwxr-xr-x 1 user users 8 Jan 15 13:40 test
-rw-r--r-- 1 root root 0 Jan 12 12:16 test.txt
user@sle15:~> cd mypic
user@sle15:~/mypic> ls -l
total 3532
-rwxr--r-- 1 user users 47052 Feb 26 2006 06226a.jpg
-rwxr--r-- 1 user users 71472 Feb 13 2006 ChryslerProwler10.JPG
-rwxr--r-- 1 user users 105900 Feb 11 2006 kin2.jpg
-rwxr--r-- 1 user users 44569 Feb 11 2006 kin3.jpg
-rwxr--r-- 1 user users 83056 Feb 11 2006 kin.jpg
user@sle15:~/mypic>
user@sle15:~/mypic> pwd
/home/user/mypic <-- 実体ではない、シンボリックリンクがパスになっています
user@sle15:~/mypic>

- まとめ -

毎日、コンソールに向かって Linux をツツイテいるヒトには「何をいまさら感」がある内容ばかりですが、意外とまとめてみると、自分でもあまり意識していない、あるいは「あれ! どうだっけ?」という、コマンドは多いものです。特に

- find
- ln -s
- ntpdate

などは、よく使いそうで意外と使い方が分かっていない、という自分に気が付きました。
いざ、という時の引き出しを用意するためにも、普段慣れしたコマンドの使い方を知っておくべきだと改めて感じました。










by islandcenter | 2020-01-15 19:41 | SUSE | Comments(0)

SUSE Linux でデバイスの死活監視を簡単に実行するには fping コマンドが便利です。

# ping xxx.xxx.xxx.xxx

を IP アドレス や DNS 名を頼りに実行するよりも、

# fping -g xxx.xxx.xxx.xxx xxx.xxx.xxx.yyy

と範囲指定ができるので、一括してサブネット上のデバイスの死活状態を把握することができます。IPアドレスのテキストリストを読み込んで、実行できるので、重要なデバイスを登録しておけば、コマンド一発でデバイスの稼働状態を確認できます。

ここでは SUSE Linux Enterprise 15 (SLE15) での fping の「ありそうな使い方」を切り取って説明しています。


※ fping はディストリビューションによって使い方が異なる場合があります。






- fping パッケージのインストール -

デフォルトではインストールされません。 SUSE Linux では zypper yast でインストールします。ちなみに、zabbix をインストールした場合、zabbix が fping を使うため、デフォルトでインストールされます。

sles15:~ #fping
If 'fping' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf fping

sles15:~ #

# yast > Software > Software Manegement > で fping "search" 、Space キーでチェックして Accept.


テキスト yast の場合
fping:SUSE Linux でデバイスの一発死活監視に便利_a0056607_17534687.png


GUI 版 yast2 の場合
fping:SUSE Linux でデバイスの一発死活監視に便利_a0056607_18512074.png
※ fping はディストリビューションによって使い方が異なる場合があります。必ず -- help でオプションを確認します。

sles15:~ # whereis fping
fping: /usr/sbin/fping /usr/share/man/man8/fping.8.gz
sles15:~ #
sles15:~ # ls /usr/sbin/fping -al
-rwxr-xr-x 1 root root 44472 May 26 2018 /usr/sbin/fping
sles15:~ #

/usr/sbin にインストールされるため、 root で実行するか、フルパス指定します。
※ fping はディストリビューションによって使い方が異なる場合があります。必ず -- help でオプションを確認します。

sles15:~ # fping --help
Usage: fping [options] [targets...]

Probing options:
-4, --ipv4 only ping IPv4 addresses
-6, --ipv6 only ping IPv6 addresses
-b, --size=BYTES amount of ping data to send, in bytes (default: 56)
-B, --backoff=N set exponential backoff factor to N (default: 1.5)
-c, --count=N count mode: send N pings to each target
-f, --file=FILE read list of targets from a file ( - means stdin)
-g, --generate generate target list (only if no -f specified)
(give start and end IP in the target list, or a CIDR address)
(ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)
-H, --ttl=N set the IP TTL value (Time To Live hops)
-I, --iface=IFACE bind to a particular interface
-l, --loop loop mode: send pings forever
-m, --all use all IPs of provided hostnames (e.g. IPv4 and IPv6), use with -A
-M, --dontfrag set the Don't Fragment flag
-O, --tos=N set the type of service (tos) flag on the ICMP packets
-p, --period=MSEC interval between ping packets to one target (in ms)
(in loop and count modes, default: 1000 ms)
-r, --retry=N number of retries (default: 3)
-R, --random random packet data (to foil link data compression)
-S, --src=IP set source address
-t, --timeout=MSEC individual target initial timeout (default: 500 ms,
except with -l/-c/-C, where it's the -p period up to 2000 ms)

Output options:
-a, --alive show targets that are alive
-A, --addr show targets by address
-C, --vcount=N same as -c, report results in verbose format
-D, --timestamp print timestamp before each output line
-e, --elapsed show elapsed time on return packets
-i, --interval=MSEC interval between sending ping packets (default: 10 ms)
-n, --name show targets by name (-d is equivalent)
-N, --netdata output compatible for netdata (-l -Q are required)
-o, --outage show the accumulated outage time (lost packets * packet interval)
-q, --quiet quiet (don't show per-target/per-ping results)
-Q, --squiet=SECS same as -q, but show summary every n seconds
-s, --stats print final stats
-u, --unreach show targets that are unreachable
-v, --version show version
sles15:~ #

- まずは、特定のアドレス範囲を指定 -

範囲指定のため -g オプションで xx.xx.xx.xx から xx.xx.xx.yy までを指定します。

sles15:~ # fping -g 192.168.1.1 192.168.1.6
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
ICMP Host Unreachable from 192.168.1.240 for ICMP Echo sent to 192.168.1.4
192.168.1.4 is unreachable
192.168.1.5 is unreachable
sles15:~ #

- ICMP Host Unreachable を表示させない -

2>/dev/null を付けて標準エラー出力を null にリダイレクト

※ 2> の間はスペースを入れません。

sles15:~ # fping -g 192.168.1.1 192.168.1.6 2> /dev/null
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.4 is unreachable
192.168.1.5 is unreachable
sles15:~ #

- サブネット全体を指定 -

-g xx.ss.xx.xx/mm でサブネットマスクを指定しサブネット全体の動作状態を確認します。

※ 2> にはスペースが入らない!

sles15:~ # fping -g 192.168.1.1/24 2>/dev/null
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.22 is alive
192.168.1.24 is alive
192.168.1.35 is alive
192.168.1.41 is alive
192.168.1.44 is alive
192.168.1.34 is alive
192.168.1.47 is alive

: 中略

192.168.1.4 is unreachable
192.168.1.5 is unreachable

: 以下略


- 生きている端末だけを表示 -

”alive” を grep してみた。

sles15:~ # fping -g 192.168.1.1/24 2>/dev/null | grep alive
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.22 is alive
192.168.1.24 is alive
192.168.1.35 is alive
192.168.1.37 is alive
192.168.1.41 is alive
192.168.1.44 is alive
192.168.1.34 is alive
192.168.1.47 is alive
192.168.1.49 is alive
192.168.1.45 is alive
192.168.1.46 is alive
192.168.1.217 is alive
192.168.1.221 is alive
192.168.1.232 is alive
192.168.1.233 is alive
192.168.1.234 is alive
192.168.1.235 is alive
192.168.1.236 is alive
192.168.1.237 is alive
192.168.1.239 is alive
192.168.1.240 is alive
sles15:~ #


- 特定のホストリストに fping してみる -

事前にホストリストのテキストを作り、 -f で指定する

-f hostlist.txt

例えば、「構内LANから、インターネットに接続できない」などの場合、hostlist.txt に経由するルータ、スイッチ、ISPのDNSインターネットサービスを記述して、おけば、いつでもすぐに接続障害が判る(といいな)な作業ができます。例えば経由するファイアウォール、ルータ、Google の DNS が動いていて、インターネットにつながるかどうかは、hostlist ファイルはこんな感じでしょうか。

sles15:~ # cat hostlist.txt
192.168.1.1
192.168.1.2
192.168.1.3
192.168.3.2
192.168.3.1
8.8.8.8
www.google.com
www.yahoo.co.jp

sles15:~ # fping -f hostlist.txt
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.3.2 is alive
192.168.3.1 is alive
8.8.8.8 is alive
www.google.com is alive
www.yahoo.co.jp is alive
sles15:~ #
sles15:~ # fping dns2 dns3 nas1
dns2 is alive
dns3 is alive
nas1 is alive
sles15:~ #


- 最終ステータスの表示 -

-s オプションで合計のステータスを合わせて表示します。

sles15:~ # fping -g -s 192.168.1.0 192.168.1.10
192.168.1.0: error while sending ping: Permission denied
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.6 is alive
192.168.1.0: error while sending ping: Permission denied

:中略

192.168.1.8 is unreachable
192.168.1.9 is unreachable
192.168.1.10 is unreachable

11 targets
4 alive
7 unreachable
0 unknown addresses

7 timeouts (waiting for response)
32 ICMP Echos sent
4 ICMP Echo Replies received
24 other ICMP received

0.23 ms (min round trip time)
0.34 ms (avg round trip time)
0.43 ms (max round trip time)
4.175 sec (elapsed real time)

sles15:~ #

- おまけ -

従来の arp -a コマンドは ip n に置き換わりました。

fping を実行してすぐに ip n を実行すると、セグメント内の各デバイスの MAC アドレスが判ります。もしアセット管理でMACアドレスを登録済のデバイス以外に、見慣れない MAC アドレスがあれば、許可なく持ち込まれたデバイスだった.....

なんて事がすぐわかると便利なんですけどね。

sles15:~ # arp -a
If 'arp' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf arp

sles15:~ # ip n
192.168.1.9 dev br0 FAILED
192.168.1.46 dev br0 lladdr 5c:59:48:8c:35:2c STALE
192.168.1.5 dev br0 FAILED
192.168.1.237 dev br0 lladdr 00:08:9b:bd:11:7e STALE
192.168.1.1 dev br0 lladdr cc:e1:d5:ca:f6:da STALE
192.168.1.233 dev br0 lladdr 52:54:00:5c:0e:0a STALE

:中略

192.168.1.217 dev br0 lladdr 52:54:00:22:df:39 STALE
192.168.1.35 dev br0 lladdr 00:23:81:17:47:e2 STALE
192.168.1.22 dev br0 lladdr 00:16:3e:f5:f5:f5 STALE
sles15:~ #

by islandcenter | 2019-12-26 18:15 | SUSE | Comments(0)

この文書を参考に、SUSE Linux 15(openSUSE Leap/SLE) で sysstat と vmstat パッケージの導入と使い方を調べてみました。


第2章 システム監視ユーティリティ

sysstat は、初期状態ではインストールされていません。

sle15:~ # sar
If 'sar' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf sar
sle15:~ #

このパッケージには、 sar, iostat などのシステム管理に「使える」ツール、コマンドが含まれています

vmstat は、デフォルトでインストールされるみたいですが。リポジトリや、 openSUSE のサイトから、最新版をインストールできます。

- opensuse15 での sysstat のインストール -

SUSE Lnux ()openSUSE,SLE) には sysstat はデフォルトでインストールされていません。 yast か zypper でインストールします。 yast の場合

sle15:~ # yast

もしくは

sle15:~ # yast2

sle15:~ # yast の場合

[Tab] と [Enter] を使って Software > Software Manegement より "sysstat" を "Search Parase"、 リストに出てきた "sysstat" を選んで、space key で ”+” (インストール)にトグルして ”Accept” します。

SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_17352692.png


sysstat をサービスマネージャで有効化します。

yast > sysem > service manager > "sysstat""On Boot", "Active" に設定

SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_17370926.png


sle15:~ # yast2 の場合

Software > Software Manegement より "sysstat" を "Search Parase"! リストに出てきた "sysstat" を選んでチェック

あとは同様にサービスマネージャで、有効化します。

- 1 click インストール -

最新版がリポジトリにない場合、software.opensuse.org よりsysstat パッケージを検索して 1 click インストール もできます。

sysstat Sar and Iostat Commands for Linux


SUSE で 1 Click インストールができない場合、YaSTにないメニューを追加


- vmstat のインストール -

vmstat は openSUSE Leap 15.1/SLE15 ではデフォルトでインストールされているはずですが、インストールされていない場合、yast > Software > software Manegement から vmstat を検索してインストールします。

あるいは https://software.opensuse.org より vmstat パッケージを検索して 1 click インストールします。

SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_17401121.png


- vmstat の使い方 -

次の例では vmstat を2秒おきに実行します。 -a は推奨パラメータです。

sle15:~ # vmstat 2 -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
1 1 197888 298152 570772 554020 0 0 4 279 9 11 2 1 92 5 0
0 0 197888 298160 570772 554064 0 0 0 187 169 330 1 1 96 3 0
0 0 197888 300208 570772 552016 0 0 0 270 189 396 1 1 94 4 0
0 0 197888 300240 570772 552016 0 0 0 346 161 331 1 1 94 5 0
0 0 197888 295892 570776 556112 0 0 0 221 283 551 10 1 88 2 0
0 0 197888 295924 570784 556112 0 0 0 327 156 330 1 0 96 4 0
0 0 197888 295940 570784 556112 0 0 0 81 132 276 0 1 96 3 0
^C
sle15:~ #



第2章 システム監視ユーティリティ

によると

r
実行キューに入っているプロセス数が表示されます。これらのプロセスは、処理を 行なうために CPU の空きを待っている状態です。ここの値が利用可能な CPU 数 よりも定常的に大きい場合は、 CPU の処理能力が不足していることを示します。
b
CPU 以外の資源を待機しているプロセス数が表示されます。ここの値が高い場合は、 入出力 (ネットワークまたはディスク) に問題があることを示しています。

とあるので、"r" のカラムは、スタンバってるプロセスキューの数、つまりCPUの空き待ちで、この数字が大きいとCPUがテンパってビジー状態であるという事です。
”b” のカラムに数字が入っている時は、入出力がテンパっている、という事になります。




- sysstat -

How to set up the sadc cron job on SLES12

sysstat は有効化すると cron で10分置きにデータの収集を始めるようです。

sle15:~ # ls /etc/sysstat/ -l
total 16
-rw-r--r-- 1 root root 1008 Oct 23 17:14 sysstat
-rw-r--r-- 1 root root 263 Oct 23 17:14 sysstat.cron
-rw-r--r-- 1 root root 6430 Oct 23 17:14 sysstat.ioconf


sle15:~ # cat /etc/sysstat/sysstat.cron
# crontab for sysstat


# Activity reports every 10 minutes everyday
*/10 * * * * root [ -x /usr/lib64/sa/sa1 ] && exec /usr/lib64/sa/sa1 -S ALL 1 1

# Update reports every 6 hours
55 5,11,17,23 * * * root [ -x /usr/lib64/sa/sa2 ] && exec /usr/lib64/sa/sa2 -A
sle15:~ #


- sar のよくある使い方 -

- とにかく使ってみる

デフォルトで "# sar" を実行すると、これまで過去10分おきに取得したデータダンプを表示します。

リアルタイムに sar でコンピュータの状態を見るには

# sar 秒数

でリアルタイム表示をします。例えば2秒おきに見たい場合は

sle15:~ # sar 2
Linux 4.12.14-lp151.27-default (sle15) 12/02/19 _x86_64_ (2 CPU)

15:11:45 CPU %user %nice %system %iowait %steal %idle
15:11:47 all 0.25 0.00 0.50 18.14 0.25 80.86
15:11:49 all 1.00 0.00 0.50 5.49 0.25 92.77
15:11:51 all 1.75 0.00 0.75 6.23 0.25 91.02
15:11:53 all 1.75 0.00 0.50 4.76 0.00 92.98
^C

Average: all 1.19 0.00 0.56 8.64 0.19 89.42
sle15:~ #

という感じです。%iowait の値が高ければ、ディスクデバイスがテンパっています。 %idole の数値が 100 であれば、ioが「ド暇」状態だし、数字が下がればテンパっている状態です。

- ディスクデバイスの負荷

# sar 秒数 - b -p オプションで、ディスクデバイス等の状態を秒単位で表示します。

sle15:~ # sar 2 -d -p
Linux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)

13:47:36 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:38 vda 20.00 0.00 331.50 16.57 0.02 13.60 0.40 0.80
13:47:38 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

13:47:38 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:40 vda 15.50 0.00 248.50 16.03 0.00 11.35 0.00 0.00
13:47:40 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

13:47:40 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:42 vda 18.50 0.00 297.50 16.08 0.00 39.78 0.22 0.40
13:47:42 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

13:47:42 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
13:47:44 vda 11.00 0.00 123.75 11.25 0.01 18.18 0.73 0.80
13:47:44 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
^C

Average: DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
Average: vda 16.25 0.00 250.31 15.40 0.01 21.29 0.31 0.50
Average: sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sle15:~ #

- ネットワークの負荷

sar 秒数 -n [Type指定] は Network のトラフィックをリアルタイムに表示します。次の例は、全ての DEVice のトラフィックを2秒ごとに表示しています。

sle15:~ # sar 2 -n DEV
Linux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)

13:56:24 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:56:26 eth0 2.50 1.50 0.53 0.10 0.00 0.00 0.00 0.00
13:56:26 lo 25.00 25.00 1.50 1.50 0.00 0.00 0.00 0.00

13:56:26 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:56:28 eth0 2.00 1.00 0.12 0.40 0.00 0.00 0.00 0.00
13:56:28 lo 16.00 16.00 0.92 0.92 0.00 0.00 0.00 0.00

13:56:28 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:56:30 eth0 2.50 0.50 0.15 0.03 0.00 0.00 0.00 0.00
13:56:30 lo 20.00 20.00 1.16 1.16 0.00 0.00 0.00 0.00
^C

Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: eth0 2.33 1.00 0.26 0.18 0.00 0.00 0.00 0.00
Average: lo 20.33 20.33 1.19 1.19 0.00 0.00 0.00 0.00
sle15:~ #

- 過去の状態の確認

過去の状態を見たい場合は -f オプションで /var/log/sa/saYYYYMMDD ファイルを指定します。これで「問題の時間帯」の負荷状態を確認できるわけですね。

sle15:~ # ls /var/log/sa
sa20191204 sa20191205 sa20191206 sar20191204 sar20191205
sle15:~ #
sle15:~ # sar -f /var/log/sa/sa20191204
Linux 4.12.14-lp151.27-default (sle15) 12/04/19 _x86_64_ (2 CPU)

13:02:44 LINUX RESTART (2 CPU)

13:10:01 CPU %user %nice %system %iowait %steal %idle
13:20:01 all 1.56 0.01 0.51 4.52 0.17 93.24
13:30:01 all 1.50 0.00 0.51 5.27 0.17 92.54
13:40:01 all 1.56 0.00 0.51 5.20 0.19 92.55
13:50:01 all 1.50 0.00 0.50 4.94 0.17 92.88

: 略

テキストにリダイレクトして Libreoffice で開いてグラフ化してみました。
SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法_a0056607_14283518.png

応用して、過去のネットワークデバイスの負荷を見たい場合は、 -n DEV オプションを使います。

sle15:~ # sar -n DEV -f /var/log/sa/sa20191204
Linux 4.12.14-lp151.27-default (sle15) 12/04/19 _x86_64_ (2 CPU)

13:02:44 LINUX RESTART (2 CPU)

13:10:01 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
13:20:01 eth0 3.73 3.28 0.53 4.05 0.00 0.00 0.00 0.00
13:20:01 lo 10.62 10.62 0.62 0.62 0.00 0.00 0.00 0.00
13:30:01 eth0 3.73 3.20 0.53 3.86 0.00 0.00 0.00 0.00
13:30:01 lo 10.84 10.84 0.64 0.64 0.00 0.00 0.00 0.00
13:40:01 eth0 4.29 3.36 0.71 4.05 0.00 0.00 0.00 0.00
13:40:01 lo 10.67 10.67 0.63 0.63 0.00 0.00 0.00 0.00

: 略

これで、深夜のバックアップやバッチジョブなどが走ったタイミングの負荷状態をチェックします。

- iostat -

ディスクデバイスの負荷状態を調べるには iostat を実行します。"# iostat 秒数" で秒数ごとに、デバイスがテンパっている状況を確認できます。

sle15:~ # iostat 2
Linux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
2.09 0.00 0.55 4.75 0.18 92.42

Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 26.01 8.45 557.93 16101980 1063087761
scd0 0.00 0.00 0.00 1040 0

avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 0.50 15.79 0.25 83.21

Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 48.50 12.00 1150.50 24 2301
scd0 0.00 0.00 0.00 0 0

^C
sle15:~ #

一番、注目するのは %iowait のカラムでしょうか。ここの数字が0であればアイドリングしていますが、でっかいファイルコピーをすると、この数字が爆発します。


- という事で -

vmstat, sar を中心に SUSE Linux のシステムの負荷状態を調べるコマンドを、非常にざっくりと見てみました。もっと詳しく知りたい場合は、マニュアルや書籍、他所に沢山情報があるので参考にしてください。

システム管理は経験です。自分でコマンドを試して、普段見慣れない数字を見つけて、良く知っている自分のシステムを「より良く知る」事が肝要です。








by islandcenter | 2019-12-07 18:05 | SUSE | Comments(0)

ncdu によって、ファイルを大量に保存してシステムを圧迫している犯人捜しの旅です。

- df と du -

先日どうも samba の調子が悪いなぁと思って、いろいろ調べているうちに、こりゃお馴染みのHDDの故障かな、随分古いディスクだし。という事でリブートしてみたら、なんと今度はXENが起動しない。

原因分からないなぁ、という事でデーモンだけ再起動して、ログを見たら容量不足でログが書けないというエラーが見つかった。慌てて

# df -h

してみたら、/var の下が満杯なんですね。でまぁことは仮想マシンの置き場です。随分と残骸が溜まっているじゃないか、という事で古いバックアップなんかを削除してみました。

この手のコマンドで他に良く使うコマンドが du です。du は、そのまま使うと、ディレクトリを舐めまくだらだらって表示されるので、次のオプションを使うと良いでしょう。

-s はディレクトリの合計を表示する
-c は全てのディレクトリの合計も表示する

オプションです。ただしバイト表示なので、 -h (human) を付けて見やすく表示しました。


sles11:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 50G 30G 20G 60% /
udev 3.8G 300K 3.8G 1% /dev
tmpfs 3.8G 6.4M 3.8G 1%/ /dev/shm
/dev/sda6 164M 24M 140M 15% /boot/efi
/dev/sda9 493G 384G 84G 83% /var <-- お前が犯人か
/dev/sda3 48G 19G 30G 39% /windows/C
/dev/sda4 98G 107M 98G 1% /windows/D
/dev/sda11 148G 94G 48G 67% /share
/dev/sdb2 1.8T 1.7T 4.2G 100% /hdd/sdb

sles11:~ # du -s -h /var/lib/xen
378G /var/lib/xen <--ここにファイルがごっちょりある

sles11:~ # du -s -c -h /var/lib/xen
378G /var/lib/xen
378G total
sles11:~ #




ただし、ここまで面倒だと使い辛いな、もっと便利で一発でパーティションを占有しているディレクトリを探せないかと探したらありました。 ncdu ツールです。

Ncdu

NCurses Disk Usage

- SUSE Linux (openSUSE, SLE )へ ncdu のインストール -

SUSE Linux (openSUSE/SLE) への ncdu のインストールは、openSUSE のソフトウェアページから、1 Click インストールできます。

YaST (yast2) による SUSE Linux のパッケージ管理, インストールと削除

まず、インストールされているブラウザから openSUSE のソフトウェアページを開きます。


# firefox https://software.opensuse.org/ &


検索ボックスから "ncdu" を検索し、使っているディストリビューションの "1 click Install" ボタンを押します。

ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncdu_a0056607_13191663.png

あとは、YaST の 1 Click インストールのウィザードに従ってインストールします。

SUSE で 1 Click インストールができない



- ncdu の操作 -

# ncdu [option] [Directory]

でディレクトリを指定してディレクトリ配下の、肥え太ったディレクトリを探します。 [Directory] を省略すると、カレントディレクトリ以下を探します。ファイルシステムの、ルート(/) から探したい場合は

# ncdu /

を実行します。/ から指定すると、時間がかかります。

今回は /var を調べたいので

# ncdu /var

を実行しました。

指定したディレクトリ以下は自由に動き回って犯人捜しをします。 "i" コマンドでディレクトリの Information をウィンドウ表示します。

こんな感じ。

ディスク占有犯は誰!SUSE Linux でディレクトリの占有量を調査 ncdu_a0056607_13205984.png

カーソルキー<>で移動しながら、犯人捜しをします。コンソールとのインターフェース、オプションはマニュアルをご参考下さい。

Ncdu Manual

終了する時は "q" で終了します。









by islandcenter | 2019-12-05 13:39 | SUSE | Comments(0)

今回説明するのは SUSE Linux (SLES12sp3) で動作する Bind9 です。

「ネットワークの調子が悪い」

とか言われると真っ先に疑われるのが DNS serviceです。ここでは SUSE Linux Enterprise 11/12 Bind の再起動dig での調査方法について説明します。




- SUSE Linux SLES12 での Bind DNS のサービスの再起動 -

SLE12 以降は、従来の initd の代わりに systemd が使われています。

rcnamed は /etc/init.d/named スクリプトのシンボリックリンクです。

dns2:~ # whereis rcnamed
rcnamed: /usr/sbin/rcnamed
dns2:~ # ls /usr/sbin/rcnamed -al
lrwxrwxrwx 1 root root 17 Jun 18 2018 /usr/sbin/rcnamed -> /etc/init.d/named
dns2:~ #
dns2:~ # ls /etc/init.d/named -l
-rwxr-xr-- 1 root root 10590 Jun 29 2017 /etc/init.d/named
dns2:~ #


SLES12より init から systemd に置き換わりました。

dns2:~ # rcnamed restart
redirecting to systemctl restart named.service

dns2:~ # tail -n10 /var/log/messages
2019-11-08T14:19:33.172180+09:00 dns2 named[10386]: couldn't add command channel ::1#953: address not available
2019-11-08T14:19:33.172264+09:00 dns2 named[10386]: managed-keys-zone: loaded serial 0
2019-11-08T14:19:33.172348+09:00 dns2 named[10386]: zone intra/IN: loaded serial 2018061800
2019-11-08T14:19:33.172521+09:00 dns2 named[10386]: zone i.islandcenter.jp/IN: loaded serial 2019072503
2019-11-08T14:19:33.172606+09:00 dns2 named[10386]: zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 42
2019-11-08T14:19:33.172689+09:00 dns2 named[10386]: zone localhost/IN: loaded serial 42
2019-11-08T14:19:33.172773+09:00 dns2 named[10386]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42
2019-11-08T14:19:33.172857+09:00 dns2 named[10386]: all zones loaded
2019-11-08T14:19:33.172940+09:00 dns2 named[10386]: running
2019-11-08T14:19:33.173030+09:00 dns2 named[10333]: Starting name server BIND ..done
dns2:~ #


YaST(yast2) では System > Service Manager より "named"自動起動停止再起動ログの確認がマウス操作だけでできます。キーボードをほとんど使わないので、どうしても SUSE Linux 管理者はモノグサになります。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_15395446.png

- SUSE Linux SLES11 での Bind DNS のサービスの再起動 -

SLE11までは、古い initd で制御されています。

dns3:~ # rcnamed restart
Shutting down name server BIND waiting for named to shut down (28s) done
Starting name server BIND done
dns3:~ #
dns3:~ # ↓ 正しく動いているかどうか、エラーがないか /var/log/messages の tail を確認
dns3:~ #
dns3:~ # tail /var/log/messages
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: A.E.F.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: B.E.F.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
Nov 8 16:09:41 dns3 named[27596]: command channel listening on 127.0.0.1#953
Nov 8 16:09:41 dns3 named[27596]: the working directory is not writable
Nov 8 16:09:41 dns3 named[27596]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42
Nov 8 16:09:41 dns3 named[27596]: zone intra/IN: loaded serial 2016051901
Nov 8 16:09:41 dns3 named[27596]: zone i.islandcenter.jp/IN: loaded serial 2019072503
Nov 8 16:09:41 dns3 named[27596]: zone localhost/IN: loaded serial 42
Nov 8 16:09:41 dns3 named[27596]: running
dns3:~ #



- dig の基本的な使い方 -

dig は bind の推奨標準ツールです。 Windows で使う場合、dig コマンドは https://www.isc.org/ よりパッケージのバイナリがダウンロードできます。

Windowsでnslookupの代わりにdigコマンドでDNSを調べる(BIND編)


- デフォルトで指定しているDNSがインターネットの host.another.com の名前解決をしているか -

[構文]# dig host.another.com

サンプル

sle15:~ # dig www.google.com
; <<>> DiG 9.11.2 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35459
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  <---- 問い合わせ内容
;www.google.com. IN A
;; ANSWER SECTION: <---- 回答内容
www.google.com. 25 IN A 172.217.27.68
;; AUTHORITY SECTION:
google.com. 167592 IN NS ns2.google.com.
google.com. 167592 IN NS ns4.google.com.
google.com. 167592 IN NS ns3.google.com.
google.com. 167592 IN NS ns1.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 167592 IN A 216.239.32.10
ns2.google.com. 167592 IN A 216.239.34.10
ns3.google.com. 167592 IN A 216.239.36.10
ns4.google.com. 167592 IN A 216.239.38.10
ns1.google.com. 167592 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 167592 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 167592 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 167592 IN AAAA 2001:4860:4802:38::a
;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Fri Nov 08 15:47:17 JST 2019
;; MSG SIZE rcvd: 307
sle15:~ #

- 明示的にDNSを指定してそのDNSサーバーが正しく動いているか -

原因が、自LANのDNSではなく、大元の ISP の DNS の場合もあります。

[構文]# dig @MyISPsDNS host.another.com

サンプル

sle15~ # dig @192.168.1.3 www.google.com
; <<>> DiG 9.11.2 <<>> @192.168.1.3 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18969
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 27
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:  <---- 問い合わせ内容
;www.google.com. IN A
;; ANSWER SECTION: <---- 回答内容
www.google.com. 80 IN A 172.217.25.196
;; AUTHORITY SECTION: <----- ゾーンのマスターは?
com. 172795 IN NS h.gtld-servers.net.
com. 172795 IN NS k.gtld-servers.net.
com. 172795 IN NS m.gtld-servers.net.
com. 172795 IN NS a.gtld-servers.net.
com. 172795 IN NS i.gtld-servers.net.
com. 172795 IN NS c.gtld-servers.net.
com. 172795 IN NS j.gtld-servers.net.
com. 172795 IN NS g.gtld-servers.net.
com. 172795 IN NS d.gtld-servers.net.
com. 172795 IN NS b.gtld-servers.net.
com. 172795 IN NS e.gtld-servers.net.
com. 172795 IN NS l.gtld-servers.net.
com. 172795 IN NS f.gtld-servers.net.
;; ADDITIONAL SECTION:   <---- ゾーンマスターの IP アドレス
a.gtld-servers.net. 172795 IN A 192.5.6.30 <-- A は IpV4
a.gtld-servers.net. 172795 IN AAAA 2001:503:a83e::2:30 <--- AAAA はIpV6
b.gtld-servers.net. 172795 IN A 192.33.14.30
b.gtld-servers.net. 172795 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 172795 IN A 192.26.92.30
c.gtld-servers.net. 172795 IN AAAA 2001:503:83eb::30
d.gtld-servers.net. 172795 IN A 192.31.80.30
d.gtld-servers.net. 172795 IN AAAA 2001:500:856e::30
e.gtld-servers.net. 172795 IN A 192.12.94.30
e.gtld-servers.net. 172795 IN AAAA 2001:502:1ca1::30
f.gtld-servers.net. 172795 IN A 192.35.51.30
f.gtld-servers.net. 172795 IN AAAA 2001:503:d414::30
g.gtld-servers.net. 172795 IN A 192.42.93.30
g.gtld-servers.net. 172795 IN AAAA 2001:503:eea3::30
h.gtld-servers.net. 172795 IN A 192.54.112.30
h.gtld-servers.net. 172795 IN AAAA 2001:502:8cc::30
i.gtld-servers.net. 172795 IN A 192.43.172.30
i.gtld-servers.net. 172795 IN AAAA 2001:503:39c1::30
j.gtld-servers.net. 172795 IN A 192.48.79.30
j.gtld-servers.net. 172795 IN AAAA 2001:502:7094::30
k.gtld-servers.net. 172795 IN A 192.52.178.30
k.gtld-servers.net. 172795 IN AAAA 2001:503:d2d::30
l.gtld-servers.net. 172795 IN A 192.41.162.30
l.gtld-servers.net. 172795 IN AAAA 2001:500:d937::30
m.gtld-servers.net. 172795 IN A 192.55.83.30
m.gtld-servers.net. 172795 IN AAAA 2001:501:b1f9::30
;; Query time: 381 msec
;; SERVER: 192.168.1.3#53(192.168.1.3)
;; WHEN: Fri Nov 08 15:56:02 JST 2019
;; MSG SIZE rcvd: 855
sle15:~ #



- イントラネット向けDNSは正しく LAN 機器のIPアドレスを返すか -

[構文] # dig @DnsIPorDnsHostName myhost.mynet.com

サンプル

sle15:~ # dig @dns2 quanbe.i.islandcenter.jp

; <<>> DiG 9.11.2 <<>> @dns2 quanbe.i.islandcenter.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20621
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;quanbe.i.islandcenter.jp. IN A

;; ANSWER SECTION:         <---- 回答 ↓
quanbe.i.islandcenter.jp. 172800 IN A 192.168.1.237

;; AUTHORITY SECTION: <--- ゾーンマスター↓
i.islandcenter.jp. 172800 IN NS dns3.i.islandcenter.jp.
i.islandcenter.jp. 172800 IN NS dns2.i.islandcenter.jp.

;; ADDITIONAL SECTION:
dns2.i.islandcenter.jp. 172800 IN A 192.168.1.2
dns3.i.islandcenter.jp. 172800 IN A 192.168.1.3

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Fri Nov 08 16:18:35 JST 2019
;; MSG SIZE rcvd: 139

sle15:~ #

- DNS のバージョンがバレていないか -

外部にむき出しのDNSは、バージョン固有のバグで悪さをされない様、バージョンを隠しておきます。

[構文] # dig @dns  CHAOS VERSION.BIND TXT

サンプル


sle15:~ # dig @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT

; <<>> DiG 9.11.2 <<>> @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46470
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;VERSION.BIND. CH TXT

;; ANSWER SECTION:       <---- バレバレ ↓
VERSION.BIND. 0 CH TXT "9.9.9-P1"

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Nov 18 14:14:53 JST 2019
;; MSG SIZE rcvd: 88

sle15:~ #

この様にバージョンがバレバレにならない様、yast > Network Services > DNS Server の ”Basic Options” の Option の項目に "Version" を空欄にするか、"unknown" の様な ”任意の文字列” を追加(Add)しておきます。あまり過激な文字列を書いておくと、ある種の「ヤル気」を起こす輩がいますから、穏当にしておくのが無難です。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_14380201.png
※ SUSE Linux で DNS を YaST で設定した場合、named.conf は /var/lib/named/etc の下に作られます。細かなパラメータの設定は必ず YaST を使う事をお勧めします。

dns2:~ # grep 99 /var/lib/named/etc/named.conf
version "99.99.99";
dns2:~ #


dig を実行するとこんな感じになりました。

sle15:~ # dig @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT

; <<>> DiG 9.11.2 <<>> @dns2.i.islandcenter.jp CHAOS VERSION.BIND TXT
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18773
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;VERSION.BIND. CH TXT

;; ANSWER SECTION  <---- バージョンを誤魔化した ↓
VERSION.BIND. 0 CH TXT "99.99.99"

;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.

;; Query time: 0 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Mon Nov 18 14:31:52 JST 2019
;; MSG SIZE rcvd: 88

sle15:~ #





- SUSE Linux での DNS ゾーンのレコードメンテナンス -

SUSE Linux (SLES/openSUSE) では yast を使って、ゾーンとレコードのメンテナンスをします。Bind DNSのインストールから初期設定、僅かな変更などのメンテナンスには間違えがなく便利です。

dns2:~ # yast

テキスト版 yast > Network Services > DNS server へ TAB キーで移動し、DNS Zones から、ゾーンファイルを Edit します。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_17311881.png

GUI版はこのような感じです。

dns2:~ # yast2 &

GUI版 yast2 > Network Services > DNS server

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_17315679.png

OK ボタンを押すと、自動的に named がリスタートします。

ただし、構文や設定、 /etc/resolve.conf に問題があると、保存して再起動は行われません。設定内容を確認して、再設定します。


- メンドクサイのでゾーンファイルをまとめてテキストエディタで書き換える -

yastでイチイチ、レコードのメンテなんてやってられねぇよ、LibreOFfice Calc で作った100 レコード位、csv で一発で追加したいんだ、という時はテキストエディタで、ゾーンファイルを編集すると良いでしょう。

# vi /var/lib/named/master/MYZONE


# gedit /var/lib/named/master/MYZONE &

でまとめて、ゾーンの変更、シリアル番号のメンテナンスを行います。

SUSE Linux DNS の動作チェック、ゾーンのメンテナンス_a0056607_18071518.png

ゾーンファイルを保存したら

# rndc reload

を実行するか、影響が小さい場合 # rcnamed restart します。

dns2:~ # rndc reload
server reload successful
dns2:~ #


- そのIPはキャッシュされてる? -

DNSが正しくホスト情報をキャッシュしているかどうかは rndc dumpdb コマンドでダンプして確認できます。キャッシュをダンプした後、/var/lib/named/log/named_dump.db の内容を確認します。


dns2:~ # rndc dumpdb
dns2:~ # grep suse.com /var/lib/named/log/named_dump.db
3090 PTR suse.com.gr.
3090 PTR suse.com.pl.
3090 PTR suse.com.tr.
suse.com. 552 A 130.57.66.19
dns2:~ #


--
速攻 1分で DNS on SUSE12 by YaST(YaST で DNS のインストール)

SUSE Linux 10 : YaST で イントラネットDNS サーバを設定

SUSE Linux で Dynamic DNS(DDNS) を作る








by islandcenter | 2019-11-09 18:00 | SUSE | Comments(0)

SUSE Linux が動くサーバー上の、ハードウェアやソフトウェアの基本的な情報を確認する方法をまとめてみました。

- 元ネタ -

Linux commands to display your hardware information

Linux lshw Command Tutorial for Beginners (6 Examples)

【 lshw 】コマンド――ハードウェアの情報を表示する

Linuxでハードウェア情報を表示させる「lshw」コマンドの使い方


ここで取り上げるコマンドの一覧

- lshw
- inxi
- hwinfo
- lsusb
- lspci
- lscpu
- dmidecode
- free
- hdparm
- lsblk
- fdisk
- smartctl
- sensors
- supportconfig

と、こんな所です


- インストール -

- lshw -
- inxi -

SUSE Linux では lshw と inxi はデフォルトではインストールされません。yast でインストールできない、リポジトリにも登録されていない場合は、手動で1クリックインストールします。

次の記事をご参考下さい。

SUSE で 1 Click インストールができない場合、YaSTにないメニューを追加

SLE15, openSUSE Leap 15.1 では、lshw, inxi パッケージをインストールする必要があります。

※ openSUSE Leap 15.1 の場合、標準レポジトリにありましたが、2019/10 現在、バージョンが古いため software.opensuse.org の1クリック版の方が新しい様です。

※ SLE 15 の場合はパッケージDVDにも、Yast2-MetaPackage-Handlerはレポジトリにもないため openSUSE のソフトウェアサイトから、1 Click インストールします。SLE15 で1クリックインストールするには Yast2-MetaPackage-Handler をダウンロードしてrpm コマンドで手動でインストールします。 software.opensuse.org より search して、yast2 metapackage handler の rpm を手動でダウンロード、インストールします。

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12162624.png


ダウンロードして

# rpm -i yast2-metapackage-handler-x.x.x.noarch.rpm

その後、lshw パッケージなど、レポジトリにないパッケージを1クリックインストールします。


より "lshw" を search して適合する SLE/openSUSE のディストリビューションのバージョンから 1 click Install


SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12180164.png



ハードウェアの設定、マザーボード、ディスク関連の情報

- hwinfo -

sle15: ~# hwinfo

: 略


sle15: ~# hwinfo --short
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12191797.png
: 以下略

sle15: ~# lshw -C network
sle15: ~# lshw -short -C network

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12195916.png

sle15: ~# lshw -short -C memory

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12211295.png

sle15: ~# lshw -short -C disk

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12220182.png

sle15: ~# lspci
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12224474.png

- lsusb -

sles15:~ # lsusb
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12232860.png

- inxi -

sles15:~ # inxi
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12240705.png

dmidecode より情報が単純で要点がまとめて出てきます。


- dmidecode -

オプションが豊富で使いこなすのはちょっと難しいかもしれません。

sles15:~ # dmidecode -q

: 省略

sles15:~ # dmidecode -t
dmidecode: option requires an argument -- 't'
Type number or keyword expected
Valid type keywords are:
bios
system
baseboard
chassis
processor
memory
cache
connector
slot

sles15:~ # dmidecode -t bios
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12250272.png

sles15:~ # dmidecode

: 長いので以下省略


- lscpu -

sle15 ~ # lscpu
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12254574.png


メモリの使用状況を調べたい

- free -

sle15:/~ # free -m
sle15:/~ # free -g

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12263549.png


ディスクやパーティション関連の情報を調べたい

- hdparm -

sle15:/~ # hdparm -i /dev/sda
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12271607.png

- lsblk -

sle15:/~ # lsblk
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12275100.png

- fdisk -

sle15:/~ # fdisk -l

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12283086.png

sle15:/~ # fdisk -l /dev/sdX
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12291282.png

- smartctl -

HDD の S.M.A.R.T 情報を調べてディスクの健康状態をチェックします。

sle15:/~ # smartctl --scan
sle15:/~ # smartctl -i /dev/sdX

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12295907.png

sle15:/~ # smartctl -a /dev/sdX

: 長いので省略

sle15:/~ # smartctl -l error /dev/sdX
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12304258.png


ハードウェアのセンサーで、マザーボード周辺の温度をチェック

SLE/openSUSE のディストリビューションのバージョンによってはインストールされていない場合があります。もし入っていない場合

# yast
> Software Management より "sensors" を Search

して、インストールします。

- sensors -

sle15:/~ # sensors-detect
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12313704.png

: 略

sle15:/~ # sensors
SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12321702.png

- supportconfig -

SLE/openSUSE 固有の supportconfig スクリプトは、ソフトウェアの基本情報を一括して取得し、/var/log/nts_hostname.yyyymmdd.tbz 形式に圧縮するスクリプトです。

SUSE Linux の設定内容を一括して取得する supportconfig

sle15:~ # supportconfig

SUSE Linux でハードウェアやソフトウェアの情報を調べる_a0056607_12331012.png

以下省略、20分位かかります。











by islandcenter | 2019-10-08 12:58 | SUSE | Comments(0)

Zabbix4を使ってみて、一番不満だったではのは、グラフの機能が貧弱になってしまった事です。

まぁ、sensors と同じ結果を時系列の線グラフ表示できる事がわかってしまったので、これはいいわ、となりました。

じゃぁ、Zabbix4 でディスクの容量管理が、なぜ Zabbix3 でできてしまって、Zabbix4 ではできないのか? 調べてみると Template SNMP Disks というテンプレートが Zabbix4 にはないことを見つけてしまったンですね。

無いなら作るか? いや面倒くさい。だったらモノグサ人間としては Zabbix3 のテンプレートそのまま使えばいいじゃん、という事にしました。





- Zabbix3 アプライアンスからテンプレートを抜き出して Zabbix4 でインポートする -

幸いの事に、ウチの零細テスト環境では Zabbix3.2 ソフトウェアアプライアンスと openSUSE Leap 15.1 の Zabbix4.2.4 が平行して稼働しているので、問題ないのですが、Zabbix3 の環境がなければ次の記事を参考に、どこか手軽な環境、Windows10 の HV だとか、KVM や Live USB などで一時的に動かすのがいいでしょう。

Zabbix3.2 のソフトウェアアプライアンスUbuntu 版をSUSE 仮想環境で試してみた。

Download and install Zabbix

Zabbix3のコンソールにログインして、 Configuration > Template を開き Template SNMP Disks をチェックして、Export ボタンを押して、SNMP-Disks-zbx_export_templates.xml の様な感じで保存します。

Zabbix4.2.4 でディスクの空き容量をグラフ化してみた_a0056607_07102830.png

今度は Zabbix4 のコンソールを開き、Configuration > Template スクリーンから先ほどのテンプレートを Import します。

Zabbix4.2.4 でディスクの空き容量をグラフ化してみた_a0056607_07111645.png

後は、Configuration > Hosts で Host を選択 > Template で先ほどインポートした SNMP Disks テンプレートを、 Select でチェック > "Add" > "Update" します。

Zabbix4.2.4 でディスクの空き容量をグラフ化してみた_a0056607_07115364.png

Host > Applications に Template SNMP Disks: Disk partitions が追加され、item に Storage Discovery: /xxxx という項目がゾロゾロと増えたら、データの収集を始めます。Graphs の横の数字に注意します。

凡そ一時間程で、Disk のパーティション毎の使用容量、残量の Pie Chart が出るようになりました。

これでアチコチでコンソールを開いて df -h コマンドを叩きまくる必要がなくなりました。やれやれです。


Zabbix4.2.4 でディスクの空き容量をグラフ化してみた_a0056607_07134434.png


出来れば、ディスク I/O の折れ線グラフ化なども出来ればいいと思うのですが、モノグサ人間には、ここまでが限界ですかね。どこかにいいテンプレート落ちていないか探索中です。





by islandcenter | 2019-07-24 07:22 | SUSE | Comments(0)

夏の暑い時期になると、急にファンが

「ぐゎーっ」

ってなったりすると、やっぱり温度監視ってこの季節重要だわ、と思います。





- SUSE の sensors パッケージ -

openSUSE/SLE には、sensors パッケージは、YaST > Software Management からインストールできます。

YaSTにリストされない場合、openSUSE のソフトウェアページからブラウザからコマンドなしの1クリックインストールできます。

sensors

sensors-detect を使って定義した後、sensors で確認できます。

SUSE+Zabbix4 で夏場のCPU温度監視と温度グラフの作成_a0056607_11522836.png
実際の sensor の使い方は、ここでは述べません。多くの事例が見つかるでしょう。コンピューターの冷却は「風通しが大切」です。



- 問題は筐体温度のグラフ化だ -

いくらコンソールを開いて、"sensors" を叩いてみても、そこにあるのは数字だけ。株価と一緒で上がっているのか下がっているのか、トレンドが見えないと意味がありません。

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ


そこで Zabbix の機能で、sensors の筐体温度の遷移値がグラフ化できないかと、探したら、そのものずばりの回答がありました。とても参考になりました。


Zabbixによる温度監視(zabbix-agent版)

DaisukeMiyamoto/CPU_Temperature.xml

これは Zabbix のテンプレートなので、テンプレートに追加して、Host のモニタリングのテンプレートに追加するだけで簡単に動いてしまいました。

SUSE+Zabbix4 で夏場のCPU温度監視と温度グラフの作成_a0056607_06352983.png


見事に深夜から未明は温度が下がっているんだ、という事が分ります。素晴らしい!

SUSE+Zabbix4 で夏場のCPU温度監視と温度グラフの作成_a0056607_11570674.png

ただ、sensors で見ると6コアなんですが、グラフは4コアしかない。これはテンプレートを見ればわかる通り、4コアしか定義していないからでしょう。最近は恐ろしいほどのコア数のマルチコアCPUもあるので、持っていないけど、機会があればテンプレートを書き換えて試してみたいです。

それにしても、Zabbix や Sensors で示しているのは40℃台なのに、Windows ノートは常時80℃前後。これってどういう違いがあるのでしょうね。


Zabbix4.2.4 でディスクの空き容量をグラフ化してみた

夏の暑さで Windows ノートPCが夏バテでいきなりリブート、再起動する対策



islandcenter.jp





by islandcenter | 2019-07-22 12:03 | SUSE | Comments(0)

How to set up zabbix 4.2 on opemSUSE Leap 15.1 ?

Zabbix 4.2 を openSUSE Leap 15.1 にインストールする手順です。

以前の zabbix 2.2 Appliance は openSUSE ベースだったので、好きにカスタマイズできたのですが、zabbix3 より ubuntu になってしまいました。ディストリビューションが混在すると、頭がパーマ状態になるので、SUSE にセットアップしてみようの回です。

zabbix4 は SUSE(SLES15) のリポジトリが使えるので、openSUSE Leap 15.1 にインストールしてみました。

基本的な手順は、こちらを手本としていますが、幾つかディストリビューション固有の問題や、日本語の問題があるので、この記事を書きました。

Download and install Zabbix

PR




- Install and prepare -

openSUSE Leap インストールと準備

- openSUSE 15.1 + Web LAMP + gnome Desktop
- Wicked Network + Static IP + DNS name space
- setup NTP

openSUSE Leap 15.1 Web LAMP install


Decide 事前に二つのパスワードを決めておきます。

password for mysql: mysqlpwd
password for zabdb: zdbpassword


openSUSE Leap 15.1 は WEB Lamp をインストールし、Static IPNTP の設定をしました。

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_11595171.png






--- repositories ---

zabbix のリポジトリをインストールします。

# rpm -Uvh --nosignature https://repo.zabbix.com/zabbix/4.2/sles/15/x86_64/zabbix-release-4.2-2.el15.noarch.rpm
# zypper --gpg-auto-import-keys refresh 'Zabbix Official Repository'


--- Install Zabbix server, frontend, agent ---

zabbix のフロントエンドとエージェントをインストールします。

# zypper install zabbix-server-mysql zabbix-web-mysql zabbix-agent


---- Enable, start mysql and apache2 ---

SYSTEMCTRL か YaST でmysql と apache2 をスタートさせます。

# systemctl restart mysql.service
# systemctl enable mysql.service
# systemctl restart apache2.service
# systemctl enable apache2.service


How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12024296.png


---- 日本語化に必要(for Japanese Frontend packages) ---

フロントエンドを日本語化するために次のパッケージが必要です。(for Japanese browser front end, install add-on packages) zypper install するか YaST でインストールします。zypper install or YaST > Software Management.

- php7-gettext
- zabbix-web-japanese

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12051449.png



-- Setup HTTP Server --

YaST HTTP Server のアイコンをインストールし、 YaST をリスタートさせて、HTTP Server のセットアップウィザードを起動します。

install "yast2-http-server", restart YaST > run "HTTP Server" icon comes up.

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12060244.png

# yast2 &

YaST > Network Service > HTTP Server > begin Wizard

Check > "Enable PHP Scripting"

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12062922.png

YaST > Network Services > HTTP Server > "Server modules" Tab > check php7 enabled.

PHP7 がイネーブルであることをチェックします。

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12083897.png


-- setup mysql monitor password --

mysql の root パスワードを設定します。

# mysqladmin -u root password mysqlpwd

restart mysql(mariadb)

# systemctl restart mysql.service

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12094826.png


-- Install Zabbix server, frontend, agent --

zabbix server と web フロントエンドをインストールします。

# zypper install zabbix-server-mysql zabbix-web-mysql zabbix-agent


-- setup mysql database --

mysql のデータベースを作ります


# mysql -uroot -p
password: mysqlpwd
mysql>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zdbpassword';
mysql> show databases;
mysql> quit;

-- Import initial schema and data. You will be prompted to enter your newly created zdbpassword. --

スキーマの拡張、zabbix DB のパスワードをセットします。

# zcat /usr/share/doc/packages/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
password: zdbpassword

---- wait 5 minutes 5分待ちます ----

-- set mysql password into zabbix_server.conf --

zabbix_server.conf に mysql のパスワードをセットします。

# gedit file /etc/zabbix/zabbix_server.conf
DBPassword=zdbpassword

-- set your time zone --

zabbix.conf にタイムゾーン Asia/Tokyo をセットします。

# gedit /etc/apache2/conf.d/zabbix.conf
### uncomment and set the right timezone for your city ###
# php_value date.timezone Europe/Riga ## <---- comment out
php_value date.timezone Asia/Tokyo ## <----- your timezone

-- restart zabbix --

## Start Zabbix server and agent processes and make it start at system boot:
# systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12110268.png


-- Begin setup --

セットアップの開始

# firefox http://locathost/zabbix &

redirect to setup.php

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12125979.png


set zdbpassword

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12142833.png



set

- Host: zabbix-server_ip
- Port: 10051(Default)
- Name: your_Zabbix_Server Hostname


How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12145254.png



-- summary --

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12152015.png



-- Login from browser --

ブラウザからログインします。デフォルトパスワードは Admin/zabbix

Login and configuring user

Default login by : Admin/zabbix

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12160285.png


Dash board comes up...

How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12162715.png


Change Language as you like. Fun ....
How to setup zabbix4.2 on openSUSE Leap 15.1 セットアップ_a0056607_12134717.png
- 次にやること -

Zabbix4.2 snmp デバイスのグラフを表示させるまで

Zabbix4.2.4 でディスクの空き容量をグラフ化してみた

SUSE+Zabbix4 で夏場のCPU温度監視と温度グラフの作成





- まとめ -

凡その作業は zabbix 公式文書そのものなのですが、OSのコンポーネントのインストール、 Apache2 と php7 の有効化、mysql と zabbix DB のパスワードの違いなどの説明がないので、初めは戸惑いました。

またスキーマの拡張にも時間がかかります。

今、zabbix 3.2 の ubuntsu Appliance を使っているのですが、テンプレートが違うので監視ホストのリストを zabbix4 はインポートしてくれません。また、かなり異なる部分があるので、まだまだ勉強です。

Do you know how to import host list exported from zbx3 to import zbx4 ? Please comment...

誤記があればコメントください。



by islandcenter | 2019-07-12 12:17 | SUSE | Comments(0)