Datadog のメモリ監視に関するダッシュボード設定
「君のアカウント、試用版だから有料版にアップグレードするか無料版にダウングレードするかしないと消すね」
と Datadog から警告が来たので、もし設定しなおす場合の参考用に。
1. メモリを used, buffers, cached, free の分け方で見る場合
free
コマンドで言うところの used, buffers, cached, free で分けて見る場合です。
グラフはこんな感じ。
それの設定はこうする。
JSONだとこういう設定になっている。
{ "viz": "timeseries", "requests": [ { "q": "avg:system.mem.free{*} by {host}, avg:system.mem.cached{*} by {host}, avg:system.mem.buffered{*} by {host}, avg:system.mem.used{*} by {host} - avg:system.mem.cached{*} by {host} - avg:system.mem.buffered{*} by {host}", "aggregator": "avg", "conditional_formats": [], "type": "area", "style": { "palette": "dog_classic" } } ], "autoscale": true, "status": "done" }
used には buffered と cached が含まれていて、 used + free = total になります。
ですので、下から
- (used - buffered - cached)
- buffered
- cached
- free
と領域を持つようなグラフになっています。
(used - buffered - cached) が使用メモリ容量とほぼイコールです。
2. メモリを available, not available で分ける場合
(used - buffered - cached) は使用メモリ容量とほぼイコールと上で書きましたが、厳密には異なります。
以下の記事が詳しいです。
Datadog では available は system.mem.usable が当たりますのでそれを使います。
こういうグラフになります。
それの設定はこう。
JSONでの記述はこうなっています。
{ "viz": "timeseries", "requests": [ { "q": "avg:system.mem.usable{*} by {host}, avg:system.mem.total{*} by {host} - avg:system.mem.usable{*} by {host}", "aggregator": "avg", "conditional_formats": [], "type": "area" } ], "autoscale": true, "status": "done" }
グラフの下部分がメモリ使用量だとわかりやすいので、下から
- (total - usable)
- usable
と領域を持つグラフにしています。
基本的にはこちらのグラフだけあれば充分ですが、 1. で紹介したグラフも並べておくと、なんとなく充実感を持てると思います。
CygWin 環境に nokogiri , ffi, mysql2 をインストールできるようになるまで
Windows で Rails アプリを動かしたくて CygWin で bundle install
したら nokogiri で止まってしまうので、必要なものをまとめた。
なお、 Windows 10 64bit 環境に CygWin64 をインストール、
apt-cyg mirror には http://cygwin.mirror.constant.com/ を利用した。
apt-cyg
まず、CygWin のデフォルトのインストーラーを使うのは大変なので、
apt-cyg を入れる。
デフォルトのインストーラーで lynx
をインストールしておく必要がある。
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg install apt-cyg /bin
で apt-cyg のインストール完了。
apt-cyg install wget apt-cyg update
でパッケージ情報を最新に。
ruby , ruby-devel
ruby だけじゃなくて ruby-devel も、nokogiri のインストールには必要なので注意。
apt-cyg install ruby ruby-devel
必要なものを入れる
ここまでで gem install nokogiri
をやってみても悲しいことに失敗するので、いろいろ足していく。
makeやCコンパイラーや、各種ライブラリ。
apt-cyg install make gcc-core zlib zlib-devel libiconv libiconv-devel
これらを足すことで nokogiri がインストールできるようになっているはず。
gem install nokogiri
成功だったらバンザイ! ダメだったらすみません……。
nokogiri 単体で使うことはあまりないので、インストールが確認できたらアンインストール。
gem uninstall nokogiri
代わりに今後使うであろう bundler を入れておきましょう。
どうも gem install
でグローバルインストールすると ~/bin
以下に実行ファイルが置かれるようなので、 ~/bin
にPATHを通します。
gem install bundler echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
その他 : ffi , mysql2
ffi のために
apt-cyg install libffi6 libffi-devel
mysql2 のために
apt-cyg install mysql libmysqlclient-devel
これらをインストールすることによって、 bundle install
を正常終了させることができた。
ちょっとしたWindows向けウィルスをPythonで作ろう
プログラマーはたまに「ハッカー」と呼ばれることなんてあります。
ハッカーって言葉のイメージと言えばウィルスです。
そうだ、ウィルスを作ろう!
これが今回のテーマです。
と言っても悪いことしたら捕まってしまうので、
友達にメールでexeファイルを送りつけて「便利アプリだよ!実行してみて!」と嘘ついて実行させると、「うわっ」と思われる程度のものを作ります。
(自己増殖しないので、今回の場合は正しくはコンピューターウィルスでなく マルウェア と呼ぶのが適切ですが、一般的な言葉の認知のもとウィルスと書きます)
参考にしたのはこちらのサイト : How to Make a Simple Computer Virus with Python
Pythonからexeファイルを作るには?
拡張子が .py じゃ誰もクリックしてくれません。 .exe ってなっててほしいですよね。
そのために使うのがこちら PyInstaller です!
exeファイルの実行開始が遅いとかいう悪評も見ましたが、 py2exe や cx_Freeze はうまく扱えなかった(Visual Studioをインストールするのはめんどうだった)ので最終的に PyInstaller にしました。
実際使ってみましたが、今回はファイルサイズが小さいからか、exeの実行開始が遅いとは感じませんでした。
PyInstaller を使ってみよう
Windows PowerShell で作っていきます。
Chocolatey は導入済みだとします。
1. Python をインストール
choco install python -y
2. PyInstaller をインストール
pip install PyInstaller
インストールできたら
pyinstaller -v
で、バージョンが表示されることを確認しましょう。
3. カンタンな Python コードの作成
てきとうな名前のフォルダを作って、そこに hello.py という名前のファイルを作って以下のように書いて保存します。
# -*- coding: utf-8 -*- import time print("Hello exe") time.sleep(2)
4. PyInstaller で exeファイルを作成
hello.py を作ったフォルダーに cd コマンドで移動していったのち、
まずは
python hello.py
で、作ったPythonコードが実行可能か試します。
「Hello exe」と表示されたら成功です。
次に PyInstaller で exeファイルにしましょう。
( -F
のオプションは、exeファイル単体を出力するためのオプションです)
pyinstaller -F hello.py
つらつらと文字が流れたのち「completed successfully.」の文字が最後に見えたら成功です。
フォルダー内に「dist」という名前のフォルダーが作られて、そこに「hello.exe」が出来上がっているはずです。
ダブルクリックで実行しましょう。
「Hello exe」と表示され、2秒経つと自動で終了します。
ファイルを作成するPythonコードを書こう
「Hello exe」と表示するだけでは物足りません。
ウィルスといえばやっぱりファイル操作。
といっても削除や拡張子の変更は本当に迷惑すぎるので、今回は大量のファイル作成ということにしておきましょう。
thousand_dreams.py という名前のファイルを作成し、以下のように書き込みます。
# -*- coding: utf-8 -*- for num in range(1000): f = open("X%06dX" % num, "w") f.truncate(1024 * 1024) # 1MB f.close
PyInstaller で exeファイルにします。
(今度は -w
オプションを加えています。これはexeファイル実行時にコンソールウィンドウを表示させないためのオプションです)
pyinstaller -F -w thousand_dreams.py
dist フォルダに thousand_dreams.exe が作られたと思います。
これをダブルクリックするだけで、1MBのファイルが1000個作られます!
けっこう迷惑です。
ちなみに、もとは1000個でなく1000000個(100万個)のファイルを作成するプログラムだったのですが、
実行したらストレージは切羽詰まってくるし(なにしろ100GBぶん作られるので)
どんどんCPU使用率は上がってくるしで、あわててタスクマネージャーからストップしました。
このように、 数行のプログラムでカンタンに友達を減らすようなアプリが作成できてしまいます!
なんてプログラミングはおそろしいんだ・・・。
プログラミングとウィルスの関係に興味を持ったら、
以前流行ったランサムウェアの学習用の実装なんかもGitHubで読めますので、ウィルスへの理解を深めると良いでしょう。
コンピューターを守るには、敵を知らなければならないのです。
セキュリティソフトをインストールしない人が世の中にはいますが、ウィルスは簡単に作られ世界にばらまかれます。
しっかりセキュリティソフトをインストールして、最低限の防衛をおこないたいところです。たった1日10円以下です。安いもんです。
私はカスペルスキーとESETを使ってます。
カスペルスキー、セキュリティ性能は高いんだけどファイアーウォールが頑張りすぎててバリバリパソコン使うような人だと引っかかることが多い。
カスペルスキーの方が優秀だけどESETくらいゆるくても充分なんじゃないか、と思ったりもします。
あとは最近海外で評価を得ている BitDefender がちょっと気になってる。
ESET ファミリー セキュリティ (最新版) | 5台3年版 | カード版 | Win/Mac/Android対応
- 出版社/メーカー: キヤノンITソリューションズ
- 発売日: 2017/04/01
- メディア: License
- この商品を含むブログを見る
- 出版社/メーカー: KasperskyLabs Japan
- 発売日: 2016/10/13
- メディア: CD-ROM
- この商品を含むブログ (1件) を見る