monitでメモリとCPUのアラートがあがったときにプロセス一覧を記録する

monitでCPUの負荷やメモリの使用量で負荷があがったとき、一瞬で解決してしまい、何が理由だったかさっぱりわからないときがあります。そのため、記録するために細工をしてみました。

check system $HOST
  if loadavg (1min) > 4 then alert
  if loadavg (5min) > 2 then alert
  if cpu usage > 80% for 10 cycles then alert
  if memory usage > 75% then alert
  if swap usage > 25% then alert

おそらくデフォルトではこんな感じで、メールを受け取るしかないのですが、それだと負荷はわかっても理由がわかりません。

check system $HOST
  if loadavg (1min) > 4 then alert
  if loadavg (5min) > 2 then alert
  if cpu usage > 80% for 10 cycles then alert
  if cpu usage > 80% for 10 cycles then exec "/bin/bash -c 'ps aux --sort -%cpu | head -n 20 | logger -p syslog.info -t [monit]'"
  if memory usage > 75% then alert
  if memory usage > 75% then exec "/bin/bash -c 'ps aux --sort -rss | head -n 20 | logger -p syslog.info -t [monit]'"
  if swap usage > 25% then alert

こんな感じで、複数行書くことができるので、そこにsyslogにプロセス一覧を書き出すようにしてみました。

  PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
22184  5.9 17.3 2777156 1416240 ?     Sl   10:33   4:39 puma: cluster worker 4: 22168 [20201201013214]
22178  6.0 14.6 2514272 1198276 ?     Sl   10:33   4:43 puma: cluster worker 2: 22168 [20201201013214]
22171  2.7 13.6 2579376 1113352 ?     Sl   10:33   2:11 puma: cluster worker 0: 22168 [20201201013214]
22174  3.7 12.3 2251696 1010764 ?     Sl   10:33   2:57 puma: cluster worker 1: 22168 [20201201013214]
22190  3.1 10.0 1863200 824036 ?      Sl   10:33   2:27 puma: cluster worker 5: 22168 [20201201013214]
22181  3.9  6.9 1860052 567664 ?      Sl   10:33   3:05 puma: cluster worker 3: 22168 [20201201013214]
  270  0.0  3.4 507008 281108 ?       S<s  Nov12  12:07 /lib/systemd/systemd-journald
22168  0.0  0.2 101068 20488 ?        Sl   10:33   0:00 puma 4.3.6 (tcp://0.0.0.0:9292) [20201201013214]
25723  0.0  0.1  90364  9760 ?        S    11:51   0:00 smtpd -n smtp -t inet -u -c -o stress= -s 2
 6969  0.0  0.1 100840  8352 ?        Sl   Nov27   0:14 puma 4.3.6 (tcp://0.0.0.0:9293) [20201127004807]
14253  0.0  0.0 321264  7804 ?        S    Nov16   0:24 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/m

24649  0.0  0.0  76644  7380 ?        Ss   11:31   0:00 /lib/systemd/systemd --user
24647  0.0  0.0 107988  7216 ?        Ss   11:31   0:00 sshd: rabbix [priv]
25728  0.0  0.0  89988  6344 ?        S    11:51   0:00 smtp -t unix -u -c
    1  0.0  0.0 225312  5588 ?        Ss   Nov12   2:53 /sbin/init
24726  0.0  0.0  23792  5164 pts/1    S+   11:31   0:00 -su
25726  0.0  0.0  73928  5128 ?        S    11:51   0:00 cleanup -z -t unix -u -c
24701  0.0  0.0  23660  5088 pts/1    Ss   11:31   0:00 -bash
25724  0.0  0.0  73820  4984 ?        S    11:51   0:00 proxymap -t unix -u

こんな感じで見られます。調査が楽ですね。

USBライトニングケーブルのバラツキを測定してみた

うちの娘に、iPadYoutubeを見ていると、ケーブル挿しているのに充電されないという苦情を受け、 USB充電器とUSBライトニングケーブルの調査をしたところ、ケーブルが悪かったので 計測結果をあげてみます。

充電器は、iPadについてくる10Wのものです。理論値で行くと、2A出ます。 ターゲットはわたしのiPhone XSです。電池残は40%ぐらいでした。

電流電圧の測定はこちらを使いました。今はもっと見やすいやつが出てそうですね。

アイネックス USB電源供給能力チェッカー KM-04

アイネックス USB電源供給能力チェッカー KM-04

  • 発売日: 2017/03/02
  • メディア: Personal Computers

測定したケーブルは、 Apple純正2本、amazon basicのケーブル1本、Ankerのケーブルたくさんって感じです。

写真を2枚ずつ貼っていきますが、iPhone側のコネクタをひっくり返して挿し込んでいます。 これがものすごくバラツキが大きい。

結論からいうと、劣化するんじゃないかと思っています。

Amazon Basicの新品(昨日はじめてつかってみたケーブル)

f:id:xibbar:20200526080855j:plain f:id:xibbar:20200526080913j:plain Amazon Basicは昔たくさん買ったのですが、軒並み充電されなくなって、あるときに全部すてました。 これは確か最近どうなってるのかなと思って、半年ぐらいに買ったのを出すのを忘れていたものです。

結果としては、かなりいいです。裏表とも1.94A出てますね。 ずっとこの電流が出ればいいのですが。

Hanyetechのケーブル

f:id:xibbar:20200526081146j:plain f:id:xibbar:20200526081133j:plain

今はもう売ってませんが、amazonで買いました。 1.17Aと1.62Aなので、裏と表でバラツキが大きすぎです。 HanyeTechは裏で充電できない事件が多発したので、 だいぶ昔にほとんど捨ててしまって、1本だけ残っていたようです。

ゴミ箱行き。

Ankerのケーブル

f:id:xibbar:20200526081015j:plain f:id:xibbar:20200526080936j:plain

1.56Aと1.53Aなので、ちょっと電流量が少ない。ゴミ箱行き。

Ankerのケーブルその2

f:id:xibbar:20200526081055j:plain f:id:xibbar:20200526081039j:plain

1.95Aと1.84A。ちょっとだけ裏と表でバラツキがありますね。 性能としてはそれなりに良い。

Apple純正ケーブル(iPhone XSについてきたやつだっはず)

f:id:xibbar:20200526081228j:plain f:id:xibbar:20200526081241j:plain

裏も表も1.84Aです。バラツキなしで、電流量もバッチリ。 昔のとくらべて、ケーブルが太くなったと思います。硬いし。

Apple純正ケーブル(昔のiPhoneについてきたやつ)

f:id:xibbar:20200526081327j:plain f:id:xibbar:20200526081342j:plain

1.56Aと1.57A。裏と表のバラツキはないけど、電流量はちょっと物足りない。ゴミ箱行き。

Ankerのケーブルその3

f:id:xibbar:20200526081435j:plain f:id:xibbar:20200526081448j:plain

1.5Aと0.73A。裏側の電流量がひどすぎ。使い物にならないので、ゴミ箱行き。

Ankerのケーブルその4

f:id:xibbar:20200526081518j:plain f:id:xibbar:20200526081533j:plain

1.46Aと1.46A。裏と表のバラツキはないが、電流量が物足りない。ゴミ箱行き。

Ankerのケーブルその5

f:id:xibbar:20200526081607j:plain f:id:xibbar:20200526081619j:plain

1.01Aと1.02A。裏と表のバラツキはないが、電流量が話にならない。ゴミ箱行き。

Ankerのケーブルその6

f:id:xibbar:20200526081651j:plain f:id:xibbar:20200526081706j:plain

1.82Aと1.65A。裏と表のバラツキが少し有る。電流量はまずまず。

TYPE-Cライトニングケーブルにアダプタ装着

を使って測定してみました。

f:id:xibbar:20200526082018j:plain f:id:xibbar:20200526082040j:plain

1.81Aと1.84Aなので、問題なし。

結果一覧

ケーブル種類 表の電流 裏の電流 合否
Amazon Basicの新品 1.94A 1.94A
HayneTech 1.62A 1.17A
Ankerその1 1.56A 1.53A
Ankerその2 1.95A 1.93A
Apple純正ケーブル(iPhone XS付属) 1.95A 1.93A
Apple純正ケーブル(昔のiPhone付属) 1.56A 1.57A
Ankerその3 1.50A 0.73A
Ankerその4 1.46A 1.46A
Ankerその5 1.01A 1.02A
Ankerその6 1.82A 1.65A
TYPE-Cライトニング+アダプタ 1.81A 1.84A

結論

もうないけど、HanyeTechはお話にならない。 いいと思っていたAnkerもバラツキが大きい。 ただ、昔のAnkerケーブルなので、いまどきの太いケーブルなら問題ないのかもしれない。 Amazon Basicの新品は、ずっと使えればいいけど、ちょっと不安。 純正も、昔のは電流が流れない。

最近Rampowが永久保証で気に入っているので、こちらを注文してみました。

青山和光さんが遊びに来てくれた

今日は毎週開催しているプログラミング勉強会の日です。 毎週開催しているのですが、雰囲気の写真だけは毎回撮ったほうがいいかな。 今日も写真撮り忘れました。

fukushima-programming.connpass.com

これにあわせて、Rubyコミッタの青山和光さんが遊びに来てくれました。 (Rubyコミッタに引退の仕組みはないと聞いた気がするので元をつけませんでした)

青山さんといえば、cgi.rbの開発者です。 今から17年半前の2002年、私は会社を起業し、cgi.rbを使って、 ウェブアプリを作っていました。 青山さんともやり取りが残っていますね。

http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/34722?34539-34887

作っていたのは研究会の受付システムです。全国の大学の先生から ファイルをアップロードしてもらって受付をするウェブアプリです。 (Rubyで仕事をするようになったのは私が全国一はやいんじゃないかと思います。) メールで200ファイルとか集めるのやってられないし、 添付ファイルも上限があるので、

  • タイトル
  • 著者
  • 所属
  • 要旨
  • ワード or PDFファイル

これらが一度に投稿できるシステムは当時は画期的でした。

その後、転職した青山さんはRubyの開発からは離れてしまいました。 それから、1.8から1.9にRubyがバージョンアップする際に、cgi.rbを外そうと 卜部さんに言われてしまい、慌ててメンテナンスを開始しました。 その過程でコミッタになったという経緯があります。

2008年、2009年あたりはそれなりにコミットしていましたが、 その後はcgiはウェブアプリのインターフェースとしては役割を終え、 今はescapeのために存在している感じです。

そして、東日本大震災で被災してからはRubyの開発やRubyの集まりからは 遠ざかってしまいました。

Rubyで社会に貢献するのよりも、もっと地域に貢献しなければならないと思ったのが理由です。 Rubyで社会に貢献している人は浅草あたりを中心に、世の中にたくさんいますが、 ここ福島で地域のIT化と地域の雇用に貢献するのが私の使命だということです。

話が脱線しました。

そうして日々仕事をしていたところ、 仕事でもRubyに再びつながった青山さんが突然連絡をくださり、 弊社と勉強会に遊びに来てくれました。 おそらく、懐かしい話でもしたくて来てくれたんだと思います。

勉強会では、私と2.7以降のキーワード引数がどうなったかを中心に話し合ってました。 満足されたかどうかは私もわかりませんが、 弊社の雰囲気と、学生と一緒に勉強会を開催して、継続していくという私の意気込みと、 その雰囲気はつかめていただけたと思います。

今日も2名ほど、勉強会に参加がてら、弊社の雰囲気を掴みに来た人がいました。 rubyと福島で検索すると弊社しかヒットしないですし、1階にポスター貼っているので、それなりに効果はあるのを確認できています。

つないでいただいた松田さん、ありがとうございました。いつもながら流石の仕事です。 また今度お茶でも飲み会でもしましょう。

第18期目に入りました

最近のIT関係の担当

最近は別の仕事のほうが忙しすぎて、全然ITをやれずにいるのですが、 それでもほそぼそとインフラ担当として、 さくらクラウドにサーバ立ち上げたり、 itamaeでサーバセッティングやっています。 Rubyはあんまりやってないです。itamaeはがんばっています。

社長歴も長くなってきた

さて、会社ですが、18期目ということで、20期まで続く感じが見えてきましたね。 20年社長やったらそれなりの実績かなと思います。

今のチャレンジ

地域貢献とは

まず、一番根底にあるのが、人材を雇用し、それを維持し続けることが、 福島市という地方でIT企業を経営する社長として最大の地域貢献であるという考え方です。

もちろん利益も大事ですが、雇用を維持し続けることが一番大事です。 地方において、雇用を維持できなくなったIT企業にいる社員は悲惨です。 IT企業ですから、転職するにも、行き先があまりありません。 東京に行ってしまえば転職は楽なのですが、福島にわざわざ住んでいる社員に、そんな選択肢はありません。

はじめてみたこと

さて、去年にオフィスを移転してからいくつかチャレンジをしていますが、 根底にあるのは、地域にIT技術者が居住できるインフラを整えたいということです。 福島大学会津大学も日大工学部も、IT技術者を排出しますが、 みんな東京に行ってしまいます。そのような技術者が Uターンで福島に戻ってくるのはシンドい。 ならば、学生が就職できるような環境づくりをしようと思っています。 はじめたのが、

  • 毎週開催のプログラミング勉強会
  • 年に1度の福島大学理工学類でのキャリアモデル学習での非常勤講師
  • 各種イベント

です。

勉強会

勉強会は去年にオフィスを移転してからはじめました。 現在のオフィスにはコワーキングスペースがあります。 オーナーにお願いして、毎週19時から21時まで勉強会のために無償で提供してもらっています。

福島市 コワーキングスペース - オフィス福島

スタートした時は、たのしいRubyを最初に買わせて、 その後はRailsの本を買わせて、講義形式で進めていきました。 段々と進捗に差が出てきて、1年たった今は本当の勉強会って感じになりました。 みなさんやりたいことをそれぞれやっています。

最初はこんな感じで、講義形式だったのですが、

f:id:xibbar:20180705202618j:plain

今はそれぞれ好きに本当の勉強会って感じでやってます。

f:id:xibbar:20190617202310j:plain

また、社会人もちょっとずつ増えてきて、いい感じです。 ネジ屋の人が最近来ないですが、飯坂に引きこもっているだろうから、 とりあえずいいことにしましょう。

勉強会はこちらで受付しています。

福島プログラミング勉強会 - connpass

福島大学での非常勤講師

非常勤講師では自分のキャリアの説明と、 いかにプログラミングが楽しくてすごいことかという話をして、 勉強会やっているから来てね。って話をしています。 勉強会を合計10人ぐらいで開催できているので、まずまずかなと思います。

各種イベント

開催したいなと思ってはいるのですが、まだ小学生向けのプログラミング体験会 「オリジナル点滅をするクリスマスツリーを作ろう!」しか開催できていません。

f:id:xibbar:20181216132559j:plain

もうちょっと開催したいのですが、ネタを思いつかなくて。。。。 また開催したいと思います。

最後に

  • 福島で最先端のことをやっている会社
  • 福島でIT勉強会を支援している会社
  • 福島で最先端のオフィスに入居している会社

を実行して、今後も地域に貢献し、社会に貢献してまいります。

  • 福島で活躍したいのIT技術者の受け皿
  • 福島のIT技術者の交流の場
  • 福島の大学生と社会人の交流の場

を提供してまいります。そして、ITでもっと売上をあげ、利益をあげて、 中期的に会社を成功まで導くのが私の使命です。

今後共よろしくお願いします。

オフィス福島とコワーキングスペース

お世話になっていますので、オフィス福島とコワーキングスペースについてお知らせします。

現在入居しているオフィスは福島市の駅至近の福島キャピタルフロントビルの7Fにあります。 もともと、オーナーが7Fワンフロア使って塾を経営していました。 その後震災が起こり、塾を閉じ、環境省の福島オフィスに数年間なりました。 去年からようやくオフィステナントとして貸し出しています。 また、コワーキングスペースとして、平日の9時から18時まで利用可能です。 通常のオフィスとして賃貸もしていますし、貸し会議室もやっています。 コワーキングスペースの管理は弊社でおこなっています。 問い合わせの方はオフィス福島の方へお願いします。 コワーキングスペースは来店いただければ弊社で受付します。

www.officefukushima.jp

小学生以上むけにプログラミングの体験教室を開催

12/16に「オリジナル点滅をするクリスマスツリーを作ろう!」と題して、小学生以上むけにプログラミングの体験教室を開催します。

  1. クリスマスツリーを組み立てる
  2. 点滅のプログラムを作成する
  3. プログラムをマイコンに書き込む

以上の内容となります。マイコンのプログラムを変更すると、様々な点滅をさせることができます。 マイコンは持ち帰り可能です。自宅に帰ってからもWindowsMacでもプログラミングできます。 これをきっかけにプログラミングや組み込みに興味を持っていただくのが狙いです。プログラミングの義務教育化もされました。これからますます必要になっていく技術です。 人数限定ですので、希望者はお早めに。

www.youtube.com

www.youtube.com

www.youtube.com

www.youtube.com

xenのDomain0をアップデートしたら、DomainUの時計が狂うようになってしまった

Domain0 をアップデートした

Domain0のサーバを、Debian8から9にアップデートしました。 そしたら、DomainUの時計が狂いました。

extra="clocksource=jiffies"の場合

Domain0のDomainU設定ファイルの中に

extra="clocksource=jiffies"

これだと、

  • /sys/devices/system/clocksource/clocksource0/current_clocksource の中身
jiffies
  • /sys/devices/system/clocksource/clocksource0/available_clocksource の中身
xen tsc refined-jiffies jiffies

この設定だと、DomainUの時計が1分で5秒ずれる。尋常ではないズレです。

extraが空の場合

  • Domain0のDomainU設定ファイルの中のextraは書きません

これだと、

  • /sys/devices/system/clocksource/clocksource0/current_clocksource の中身
xen
  • /sys/devices/system/clocksource/clocksource0/available_clocksource の中身
xen tsc

これだと時計がDomain0に同期するようになった。

結論

clocksource=jiffies を使ってはだめになったみたい。 というか、xen使っている人なんてもういないのかなぁ。。

第8〜9回プログラミング勉強会

ちょっと体調崩したりしたので、遅くなりました。 第7回は私も休んでましたので、レポートなしです。

Numeric

今回は第12章のNumericからやりました。 四則演算などは普通に使うのですが、 Rationalとかはこういう機会でもないとなかなか使わないですよね。 復習するにはいい機会でした。

あとは、ビット演算も、orとandや論理和論理積などやりました。

Numericはそんなに難しくないですね。

Array

Arrayは配列ではあるのですが、Rubyの場合はキューやスタックとしても 機能するので、便利ですね。一般的な使い方を勉強しました。

初期化には注意です。

a = Array.new(3, [0, 0, 0])
a[1][1]=2
p a
 [[0, 2, 0], [0, 2, 0], [0, 2, 0]]

これだと期待したものができませんね。 同じオブジェクトを指してしまいます。

a=Array.new(3){[0,0,0]}
a[1][1]=2
p a
[[0, 0, 0], [0, 2, 0], [0, 0, 0]]

こうしないと、期待通りに動きません。

String

文字列処理はRubyの得意分野なので、なんでもできますし、 しっかり覚えておく必要がありますね。

相変わらず、sprintfは出てくるのですが、String#%[]を使ったほうが短いです。

Arrayにも出てきましたが、Enumeratorは難しかったですね。 徐々にわかっていければと思います。

次回はHashですね。参加者募集中です。

fukushima-programming.connpass.com