サーバーを可視化しよう!その1. cacti
@bussorenre です。
この記事ではcacti にトライした時のメモを残していきます。OS はCent OS 6.6 です。実際に試した環境はsakura VPS 2G プランのインスタンス上です。
また、「私の勝手な主観」が入る事が多いので、「そこは違うで」って指摘していただけるとすごい助かります。
cacti 概要
依存するソフトウェア - Apache web server... データを確認するのに使用 - MySQL...
# rootユーザーに切り替え。 su - # root ユーザーに切り替わった後 yum install -y cacti mysql-server # cacti が利用するユーザー、MySQL DB などを準備してあげる。 mysql -u root -p mysql> CREATE DATABASE cacti; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON cacti.* TO cacti@localhost IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql>bye; # cacti にdbの設定を記述 (emacs でも) vi /etc/cacti/db.php $database_type = "mysql"; //使用するデータベース種別. MYSQL以外も使えるっぽい。 $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cacti"; // データベース接続に使用するユーザー名 $database_password = "password"; // データベース接続に使用するパスワード $database_port = "3306"; // データベース接続に使用するポート番号 $database_ssl = false; :wq # 初期データベースの作成(0.8.8b はcacti のバージョン。) mysql -u cacti -p cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql # cacti をapache から確認出来るように設定をいじる(特にいじることがなかった\(^o^)/) vi /etc/httpd/conf.d/cacti.conf :wq # crond で定期実行 vi /etc/cron.d/cacti (# 行頭コメントを外して有効化) */5 * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1 :wq service crond restart
ここまでできたらhttp://localhost/cacti/install/ にアクセスして初期設定を行う。
個人的に感じたこと * 何度も見たことのある憧れの画面で感動\(^o^)/ * 監視用のマシンを1代別途用意して、そこにmySQL を用意して監視するという選択肢は考えたけど、それならsensu のほうが今どきでよさ気かもしれへんって思った。
参考にした記事 * モニタリングツール「Cacti」でのリソース監視 - さくらのナレッジ
サーバーの状態を可視化しよう!その0. 概要
こんばんは。夏!暑い!けどオフィス寒い!社畜なんてやってる場合じゃねええ!@bussorenre です。
さて、仕事で使うサーバーも趣味(minecraft)で使うサーバーも、「もっと楽に状態管理したいなー」って思ったので、例によって今回自分用に記事を書き残します。勉強中なので「これ違うで」「こんなんもあるで」みたいな事があれば共有していただけると幸いです。
現状の選択肢
- Graphite - http://graphite.wikidot.com/ リッチらしい
- Cacti - http://www.cacti.net/ よくあるやつだけど古いらしい。
- Munin - http://munin-monitoring.org/ 簡単やけど、ガチ環境では微妙らしい。
- Sensu - https://sensuapp.org/ 今どきらしい。
らしいというのは、詳しい方の一言コメントです。
Graphite
今度書く
Cacti
今日書く
Munin
今度書く
Sensu
今度書く
情報に価値がある時代は、いつの間にか終わってた
お久しぶりです。ぶっそれんれです!
大学を無事卒業し、東京に出てきて社畜してます。まだ研修期間なので、非常に丁寧に扱われていますが………
この記事は、東京に出てきて、社会人になって思ったこと、感じた事、そしてこれから大事にしていきたい姿勢を、個人的にまとめる記事です。
要約すると、以下の三つです。
この見出しだけだと、すごいネガティブベースな思想に聞こえますが、そうで無いのでご了承を……。
大都会東京すげええええ(ry
今までイベントや就活で東京に来ることは何度もありましたが、大学を出て実際に上京して「住む」と、色々な事が見えてきてびっくりします。
若い人が多い
人が多すぎて、通勤電車ヤバいとか思ったんですが、それよりも驚いたのが若い人の多さ。休日に知り合いが経営するカフェに遊びに行くために吉祥寺まで出かけたのですが、若い人が多い。子どもが多い。ついでに美人も多いしイケメンも多い。どうなってるんだ。
スウェーデンに出かけた時に思った事ですが、若い人(特に子育て層)が多くて、公園とか商店街とかにすごい活気があって良いなって思っていました。「あー日本にはこんな所ないわー」って思っていただけに、「日本にも若い人が多くて活気がある街があったんだ」って思いました。だって、昼間から外で酒飲んで騒げる場所、大阪にはあんまり無い。
大阪に漂う「未来無い感じ」が、東京にはそれほど感じられない。
滋賀の草津市は関西唯一の人口増加地域で、若い世代がすごい多くて、活気があって好きなのですが、古くからの地主が、よそからやってきたよそ者からお金などを搾取する構図が、どうしても拭いきれません。若い人を主役にしようという動きはあるのですが、本当の意味で若い人が主役になっている場所というのは、本当に少ないのが実情です。
在住している外国人が多い
京都も、それはそれは物凄い勢いで外国人が訪れます。しかし、それはあくまで観光。東京は「実際に住んでいる」人が非常に多い。色々なバックボーンがあれど、日本に来て、日本で働き、程度の差はあれど日本語を喋る彼らを「外国人」と呼ぶのはすごい失礼な気がしてくるくらい、溶け込んでいる。
神戸はそうではないのですが、やはり京都は外国人は「お客様」だし、大阪の一部地域は「在日差別」がすごく今もなお激しく残る地域で、とても彼らが住みやすい土地ではないんだろうなっって痛感します。(まぁ、だからこそ、ヘレンさんとかがすごい注目されるのですが)
プロフェッショナルが多い
これは今日の秋葉原で思ったのですが、メイドさんすごい。秋葉原に観光で訪れてた人に英語で全力でご主人様を口説いてる姿はマジですごいと思いました。最近JKリフレとか変なのが増えてきたので、全員が全員そういうわけではないんでしょうけど……。
まぁ、何が言いたいかというと、「私は世界にこういう価値を与えていく」って意識を持っている人が、多い気がします。「東京クッソ人多いのに、人手が足りへんとか言うのいみわからへんわww」って思っていたのですが、「人手が足りない」って言うのは「プロ意識を持てる人材が需要に見合ってない」って置き換えるとすごい納得しました。
かたや、大阪。仕事ありません。無くはないですが、それは昔ながらの歯車になれ精神です。歯車も大事ですが、車輪の再発明は時間の無駄ですし(勉強にはいいですが)、どうせなら歯車じゃなくて動力になりたい。
わけわからんIT系のスタートアップなんかより、その辺にある飲食店や美容院のほうが、よっぽど尊い。よっぽど世界に価値を与えている。そう思えるところが、少なくないです。
東京は活気があって、多様なプロフェッショナルが多い。
そんな土地だなって思います。
情熱は、インターネットでは伝わらない。
そんな東京ですが、本やネットやテレビで、「どんな場所か」って言うのは毎日のように、伝わってきてましたが、唯一インターネットで伝わりづらかったものがありまして。それは「情熱」です。
多くの先進国もそうですが、日本は、高度経済成長を経て、モノに困らない豊かな世界になりましたし、95年のwindows 95 を境目あたりに始まったIT革命によって、どこに居ても世界中の情報を手に入れることが出来る世界になりました。
伝わらないものは情熱。そして、人を動かすのは情報ではなく情熱であると。
今まで情報が人を動かすと言われていましたが、それは「元々情熱持つ人」が「情報を手に入れた」から実際の行動につながったんじゃないかなと思います。けれど、世界は、物凄い勢いでうつの人が増えていて。体は元気なのに、自分でご飯を食べようとすることすらできない人が居ます。個人的には「心の格差」とか呼んでいますが……。
大学時代、動機付けの研究をしていましたが、結局の所、心のエネルギーが、内発的であれ、外発的であれ、エネルギーが満たされれば人が行動できるんです。教育界隈、自発的な学習がいいとか、興味を引き出して〜とか言われてい居ますが、それは教師が上手に情熱を子どもに伝えることができなかった言い訳に過ぎないと思っています。当然、自発的な興味を引き出す事が出来れば、それは本当に素晴らしいことですが、それが難しい子どもが世の中には五万どころか数千万と居ます。そういう子たちに、背中を押すという事をしなかった大人の責任は非常に大きいと思います。
話がそれました。
大事な事は、「情熱が人を動かす」
東京は、確かに、人もお金もモノも情報も溢れているけれど、それよりも、情熱が溢れてる。そしてそれは、インターネットでは伝わりづらかった。少なくとも私は、実際に住むまで、情報と情熱の違いが分かってなかった。
リア充をリア充と蔑むのとやめる。
そもそも、情熱ってなんやねんって話になるんですけど、日本語通りに解釈するなら、「心(性格には感情)が持つ熱量」じゃないかなって思っています。
私は体も心も熱いのは苦手です。所謂リア充とか、うぇい系のような人たちみたいな、あっつあっつの空間に打ち込まれると、湯だってへとへとになってしまいます。ですが、寒いのはもっと苦手です。誰も相手にしてくれない、鬱々しい、寒くてくらい世界は、もっと苦手です。
正直、私はうぇい系の人を暑苦しい奴らだと思って、蔑んでいました。
しかし、近年、エンジニアリングが重視される時代になった事もあってか、私みたいな奴の事を、キモいオタクだと蔑んでいたうぇい系の人たちが、寄り添ってきた。どういう考えを持って、どういう熱量で接すればちょうどいいのかとか、すごい考えてくれてます。
なのに私は、正直まだ「必要な時だけ寄り添ってきやがって」って、心のどこかで思っています。実際そうなのかもしれません。
けれど、私も所謂うぇい系の人を、うぇい系と蔑むんじゃなくて、人に情熱を伝えたり、場を創ったりするのが得意な、ファシリテーターと呼んで、寄り添っていきたいって思っていきます。オタクと呼ぶのをやめて、ギークであったり、エンジニアであったり、好意的な呼び方をつけてくれたように。
まとめ
一ヶ月間、社会人になって「私はこれから何になるんだろう?何がしたいんだろう?」って、必死に考えていました。
東京に来て一週間で、情報なんかよりも情熱に価値がある事は分かりましたし、それが出来る人(例えば営業の人とか)って本当にすごいなって思いました。
そして出た答えが「一緒に居て楽しい人になろう!」って事でした。やっぱり人間「楽しい」って思うことに対してはすごいポジティブで、最もエネルギーを持っている時だと思うので、「楽しい」のサポートがしたいなって。
そしてそのために「色々なプロフェッショナルの情熱を知ろう」って決めました。今までパソコンに甘えすぎました。自分の世界にこもりすぎました。反省。色々な人に会いたい!
明日でGW終わって、明後日からまた社畜生活始まるけど、「一緒に居て楽しい人」目指してがんばります。\(^o^)/\(^o^)/\(^o^)/
そうそう、秋葉原で、すっごい安いのに、それなりにいい音が出るギター発見したんですよ。ちょっとした宴会でコーラスマスター出来るくらいにはギター引けるといいなって事で、明日パーチェイスします(゚∀゚)
またね!駄文に付き合ってくれてありがとうございました!
CentOS 7 困ったこととその解決策まとめ
多分RHEL beta に触れている人とか、エンタープライズのRHELを使っている人はもうすでに知っている情報なのかもしれないけれど。ぼくなりに困ったことと解決した方法なので一応載せておきます。
ifconfig が無い
- yum install net-tools でインストールする
- http://www.linuxfoundation.org/collaborate/workgroups/networking/net-tools
- 遠くない将来ifconfig, arp, iptunnel, route, ipmaddr などのコマンドが廃止される可能性がある
- ip コマンドを使う
- 上記5つのコマンドを内包
- ip a でifconfig と同じことが出来る。
解説記事はここ http://d.hatena.ne.jp/enakai00/20140712/1405139841
大本のiproute2はここ http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
eth0 が無い or インターネットに接続出来ない。
- ip a してみるとわかるけど、eth0とかが無い
- enps0 に任意の数字 が有線LANの識別子
- wlps0 に任意の数字 が無線LANの識別子
- 昔ながらのeth0とかにする方法
[root@localhost ~]# vi /boot/grub/grub.conf # 最下行に追加 net.ifnames=0 biosdevame=0
システムをリブート
- 起動時に有線LANを自動的にDHCPに割り当てる。
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 #以下の設定になっているか確認する。 BOOTPROTO=dhcp ONBOOT="yes"
なお、ifcfg-eth0 がない可能性があるので、ifcfg-enp*s0などがアレばそちらを修正する。
詳細記事はココ。どうやら多くの人がハマっているらしい。 http://wiki.centos.org/FAQ/CentOS7#ethernet
iptablesが無い
- firewalld がかわりに存在しているのでコレで頑張る
- firewalld についてはggってください。参考にしたのはコレ http://www.slideshare.net/enakai/firewalld-study-v10
mySQL がインストール出来ない
yum install mysql ってすると、なぜかmariadbがインストールされている。
- wget で mysql をインストールしてもいい。
- sqlite or PostgreSQLを使う
- コレを期にmariadb に移行する
nginxがyum install nginx でインストール出来ない。
- リポジトリファイルを作成する
$ sudo vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
これでyum install nginx でインストール出来る。
その他
- 何か発見し次第修正します。
CentOS7 をラップトップに入れた時のメモ
そもそもifconfig コマンドがなかった……( ゚д゚)ポカーン
こんばんは。@bussorenre です。なんか最近こんな書き出しが多い気がします。
とあるノートパソコンにCentOS7 をインストールした時に困った事をメモしました。
有線でインターネットに接続出来ない。
冒頭にもある通り、最小限の構成でインストールするとifconfigコマンドが存在しません。yum で入れ用にもネットワークが接続出来てないので詰んでます。色々ぐぐった所、"ip a" ってコマンドがあるらしいので、それを代用してネットワーク構成を確認。enp4s0 っていう構成がどうやら、NICのMACアドレスを持っているっぽいので、それの設定をいじります。
$ sudo vi /etc/sysconfig/network-script/ifcfg-enp4s0 #ONBOOT=no ONBOOT=yes yesに書き換える。 $ sudo service network restart
以上。コレで、無事DHCPでインターネットに接続出来ます。
蓋を閉じた時にサスペンドしない
蓋を閉じた時にサスペンドされてしまうとサーバーとして詰んでいるので、やめさせます。なお、設定ファイルをいじった後にシステムの再起動が必要なので再起動します。
$ sudo vi /etc/systemd/logind.conf
HandleLidSwitch=ignore ← 最下行に追加
$ sudo reboot
ssh は最小限の構成でインストールされていたので、後は無事遠隔で操作出来ます。
またねー!
envp - main関数3つ目の引数
昨日の俺 「知らんかった……( ゚д゚)ポカーン」
C言語のmain関数には引数が”3つ”存在する。
大体Cの入門書は int main() とかだし、ちょっと毛が生えてきて、引数を取って挙動を変えましょうとかだと、argc, argv を取るだけだと思うし、sublime TextのCのsnippet もargv までしか補完してくれないし、envp ってなんやねんΣ(゚Д゚)
crt1.cには以下のように書かれている。
extern int main (int, char **, char **);
この3つめの引数が いわゆるenvp で、"環境変数へのポインタ"らしい。 環境変数はbashやzshで
$ set
というコマンドで確認できる。いわゆる$PATHとかの事。 実際に引数を確認するプログラムを作成してみましょう。
#include <stdio.h> int main(int argc, char *argv[], char *envp[]) { int i = 0; /* argc の確認 */ printf("argc = %d\n", argc); /* argv の確認 */ printf("argv = ["); for (i = 0; i < argc; i++) { printf("\'%s\' ", argv[i]); } printf("]\n"); /* envp の確認 */ printf("envp = ["); for (i = 0; envp[i]; i++) { printf("\'%s\' ", envp[i]); } printf("]\n"); return 0; }
で、実行結果ですが、
./a.out argc = 1 argv = ['./a.out' ] envp = ['TERM_PROGRAM=iTerm.app' 'TERM=xterm-256color' 'SHELL=/bin/bash' 'CLICOLOR=1'......(非常に汚い環境変数なのでお見せできません笑
となりました。環境変数は必ず hoge=piyo foo=bar という文字列で格納されているので、strtok関数などで分解してやると扱いやすいと思われます。
これは便利だ!!
PWDやHOMEなどの環境変数も入っているので、HOMEフォルダにアプリケーションの設定ファイル.ore_rcみたいなのを置けます。また、envpはfork/execしても変更されず引き継げますので(※要調査。変数をそのまま引き継ぐわけではなく、envpが格納されているメモリがexecにより書き換えられない?)
8年近く、Cのmain関数は引数2つだと思い込んでいたので、非常に勉強になりました。というか、反省しています。常識を疑うって大事(白目