
miyashitak
zabbixのグラフで日本語が文字化けを直す
...おはようございます。インフラ宮下です。
zabbixのグラフ設定は標準では日本語が表示されません。 ※アイテム名に日本語を使っている場合です。
動作環境はこんな感じです。
OS:CentOS release 6.5 (Final) バージョン:zabbix-server-2.2.3
「監視データ」→「グラフ」で作成したグラフを見てみると下記のように日本語の部分が□になってしまいます。 これはアイテムに日本語を使っていて画像変換時にフォントがないのが原因です。

まずはフォントがおかれている場所を確認します。
# ls /usr/share/zabbix/fonts/ graphfont.ttf次にOSに搭載されているフォントを確認します。
$ ls /usr/share/fonts/ dejavu ipa-gothic ipa-mincho ipa-pgothic ipa-pmincho vlgothicIPAを使います。ただシンボリックリンクを張るだけでOKです。 特にzabbix-serverの再起動も必要ないです。
# ln -s /usr/share/fonts/ipa-pgothic/ipagp.ttf /usr/share/zabbix/fonts/ipagp.ttf # vi /usr/share/zabbix/include/defines.inc.php (変更箇所) 7 39c39 < define('ZBX_GRAPH_FONT_NAME', 'ipagp'); // font file name --- > define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name 86c86 < define('ZBX_FONT_NAME', 'ipagp'); --- > define('ZBX_FONT_NAME', 'graphfont');
運用的グラフを診る(DNS編)
...おはようございます。インフラ宮下です。
ビックデータ時代様々なデータやグラフがあふれかえってます。 そんなグラフに関するお話です。
はじめに
インフラ運用で使う実際のグラフを使って、どのような事が起きていてどんな対処が必要になるのかを見ていきたいと思います。
使うグラフ

muninでbindのクエリ統計をとったグラフです。 OSはCentOS release 5.9になります。
問題点
グラフの色はクエリタイプ毎に分類されているのですが、AM8時前までで一番多いのはANYレコードです。 これは「DNS AMP攻撃」が行われた形跡です。
ISPにおけるDoS/DDoS攻撃の検知・対策技術 DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定
対応策
今回は意図的に対策していないBindを利用している為、攻撃にさらされてしまいました。 DNS AMP攻撃がひどいのが、勝手にトラフィックを使って他人を攻撃してしまっているので本人に悪気が無くても加害者になってしまいます。 対策は既に出回っていますが、bindバージョンアップして再帰的問い合わせを実施しないか、クエリを受け付けるNWを制限するというのが一般的です。 あとはCentOS6系であればiptablesで特定ドメインのクエリを止める事が出来ます。 (出来るのはCentOS6以上)
NSサーバへのANY? . な連続リクエスト対応 DNSアタックとiptablesフィルタ
実際のANYリクエストで多いのは「isc.org」だと思います。どちらかと言うと長期間にわたってじんわりと来る感じ。 その他では「uspsoig.gov」や「defcon.org」「doleta.gov」が最近良く目にします。
先程のiptablesでブロックする方法は、 DNS Amplification Attacks Observer など情報は出回っていますのでサービスに影響が出ない範囲で実施してみてください。
注意しなければいけない点としては、qmailがメール送受信時の名前解決にANYレコードを引いてくるので何でもかんでもANYははじいてしまうとメール障害となってしまいます。 qmailとDNSSEC <a http://mediakisslab.net/doku.php?id=linux:qmail:memo" target="_blank">DNSSEC対応
さいごに
昔は自前でDNSサーバをたてて、そのまま放置して今も稼働しているなんて言うケースはどこでもあると思います。 (むしろ外部サービスとかで使われているDNSはきちんと担当の方がいて健全に運用している気がします) グレイな環境で手が出ないオープンリゾルバなDNSは怖いですな。 (昔はメールの不正中継の方が花形だったのに…)
solarisのKSSLをつかう
...おはようございます。インフラ宮下です。
最近はopensslの脆弱性が頻繁に取りざたされています。 そこで今回はKSSLを使ってSSLをterminateする設定を紹介します。
1.環境
サーバ:oracle spark enterprise T2000 OS:solaris10
とても古い環境です。
構成:コンテナ構成でWEBサーバはlocal ZONEに構築されています。 KSSLで終端するのはglobal ZONEです。 local ZONEのWEBサーバでは、8888ポートでListenするように設定しています。
2.証明書の準備
KSSLで渡せる証明書情報は1ファイルだけなので、「証明書+中間証明書+秘密鍵」の順番で情報を貼り付けたファイルをGlobal ZONEから見れる場所に設置する。
[shell]# vi /etc/httpd/keys/abc.net.key [/shell]
3.SMFにKSSLサービスを登録する
[shell]ksslcfg create -f pem -i /etc/httpd/keys/abc.net.key -x 8888 zone-web01 443 [/shell]
「zone-web01」はforward先のサーバを差します。(今回はlocal ZONEのWEBサーバ) この名前は、DNSで引けるかhostsに登録してある必要があります。 「-i」…設置した証明書を指定する。経験的にファイルの権限とかに制約はない 「-x」…配下のサーバと通信ポート番号。webサーバがListenしているポートです 「zone-web01」…terminate後の接続先サーバ名 「443」…KSSL自体が待ち受けるポート
[shell]# svcs -a|grep ssl online 10:15:01 svc:/network/ssl/proxy:kssl-zone-web01-443 [/shell] Global Zoneでこのように「online」となれば起動成功です。
source treeを使ってgitlabを触ってみる(2)
...おはようございます。インフラ宮下です。
前回source treeのインストールと鍵の登録までを説明しましたので、今回はgitlabとの接続について説明します。 社内にgitlabがあるのでgitlabとの接続が前提となります。 (もちろんgitlabのアカウントもある想定)
gitlabの自分profile画面のメニューで「SSH keys」を選択します。
既に登録されている鍵の一覧が確認できます。右上にある「Add SSH key」をっクリックします。

鍵登録の画面に移ったら、Titleに識別し易い名前を(入力しないと自動生成されます)入れて、Keyの所に前回作成した公開鍵を貼り付けたら「Add key」で登録します。

登録keyの一覧に表示されたら無事登録は完了です。
再びsource treeに戻ります。
ではgitlabのリポジトリをcloneします。「新規/クローンを作成する」で開始します。

今回は、gitlabのリポジトリを使いますので、「リポジトリをクローン」タブを選択して、 ・元のパス/URLにgitlabの接続先情報を入れます。 (例:http://192.168.0.250/infra/projectX.git) 社内gitlabはhttpでの接続が出来ますが、gitであったりsshでも接続出来る方法なら何でも大丈夫です。 入力したら自動で接続確認が行われて接続成功・失敗が確認出来ます。 ・保存先のパスにクローンしたデータの保存先を指定します。 ・リポジトリをブックマークはそのまま選択状態にしておきます。 ・名前はsourcetree上で表示される名前なので、どのリポジトリかわかるような名前を付けておいてください。

必要事項を入力したら「クローン」でスタートです。
データ量によりますが、しばらく待つと保存先のパスにクローンが完了します。

無事登録されました。これでsourcetreeからgitライフが可能となります。
基本的な作業として、pushするまではこんな感じです。 PC側でファイルの修正をすると変更アイコンに変わりますので「追加」をクリックするかファイルの所をクリックします。

AWSとVPN接続したら応答が無くなる時の対応
...おはようございます。インフラ宮下です。
AWSのVPCとオフィスをVPNで接続するケースは良くありますが、構成によってはダウンロードしたconfigではうまく動作しない事があります。 今回は、以下の環境の時に変更しなければいけなかった設定をまとめたいと思います。
1)AWSの接続環境
[shell]リージョン:シンガポール ルータ:YAMAHA RTX 1200 経路情報:Static[/shell]
2)VPNのconfigを確認
VPN Connectionsを作成した後にconfigをダウンロードすると設定項目として、IKE・IPSec・Tunnel Interface・Static Route の4項目がありますのでそれぞれの内容について確認しましょう。
・IKE
[shell] tunnel select 1 ipsec ike encryption 1 aes-cbc ipsec ike group 1 modp1024 ipsec ike hash 1 sha ipsec ike pre-shared-key 1 text y7Nn93e7fJHWQrUaabbccdd112233[/shell]
IKEについては、configそのまま流用で問題ないでしょう。keyは個々に違いますので正しいKeyにしてください。 トンネル番号は、既に「1」を使っている場合は違う数字にしてください。(以降のID表記も忘れずに変える)
・IPSec
[shell] ipsec tunnel 201 ipsec sa policy 201 1 esp aes-cbc sha-hmac ipsec ike duration ipsec-sa 1 3600 ipsec ike pfs 1 on ipsec tunnel outer df-bit clear ipsec ike keepalive use 1 on dpd 10 3[/shell]
source treeを使ってgitlabを触ってみる(1)
...おはようございます。インフラの宮下です。
社内で稼働中のgitlabがあるのですが、CLI使える人が少ないせいかgitしている人が思った以上に少ないのに困ってます。 最近はWindowsのツールでも充分にGitの体験が出来るようですので、今回は「SourceTree」を紹介したいと思います。 アンチCLIの方は「SourceTree」でも十分git操作可能ですのでまず手始めに利用してみては如何でしょうか。
そもそもGitの意味がわからないという人はごめんなさい。いずれgitの構築も誰かが書いてくれると思いますので今回は割愛します。 git知識としてはとってもわかりやすい下記サイトをご覧ください。
分散型バージョン管理システムなので、みんなで使ってたまにはデグレしたりと苦い経験をしておいた方が良いと思ってます。 バックアップとかしっかりしておけば傷は浅く済むと思います… chefと連携しても良いと思いますし、configを管理してバージョンや差分を管理するでも良いですし、単にreadme的な手順を管理するでも何でも用途は良いと思います。
1)SourceTreeをインストールする
Source tree公式サイトから今回はwindows7版のファイルをDownloadします。

ダウンロードした実行ファイル「SourceTreeSetup_1.6.13.exe」をダブルクリックしてインストールを開始します。

ほぼ流れにのってインストールするだけで終わります。

「グローバル無視設定ファイル」の作成を聞かれますが「Yes」「No」今の所どちらでも良いです。 今回は「Yes」にして進みます。

publicのリポジトリ設定をすると接続する事が出来ます。アカウントがあればアカウント・ユーザ名・パスワードを入力してください。 今回の用途は自社内のgitlabとの接続なので「スキップ」します。

最後にSSHキーの読み込みをするか聞かれます。既に持っている場合は登録しても良いですが後でも出来るので「No」としておきます。

2)SSH鍵を作成して登録
gitlabにつなぐ為に作業PCの鍵を登録します。
SourceTreeを起動してまずはSSH鍵の作成と登録を行います。 既に作成した鍵がある場合はあえて作成する必要はありません。
「ツール」→「SSHキーの作成/インポート」でPuttyKeyGeneratorを起動します。

「Generate」をクリックしたらマウスをたくさん動かしていると鍵の作成が完了します。
AWS認定ソリューションアーキテクト–アソシエイトレベル受験体験記
...おはようございます。インフラの宮下です。
ゴールデンウィーク突入の直前に「AWS 認定ソリューションアーキテクト – アソシエイトレベル」を受験しましたので、
試験の手続き方法や勉強内容について守秘義務に反しない程度にご紹介します。○ 試験の事、そして申込みまで
試験範囲は、Blueprintが公開されていますので正確な情報はそちらを確認してください。
blueprint現時点での出題配分は下記の通りで、Blueprintでは一つ一つ細かく説明がなされています。
時間の限られている社会人は、勉強の基本はBlueprintを見て戦略を練るのが最短距離とい言うのが私の方針です。1.0 Designing highly available, cost efficient, fault tolerant, scalable systems 60%
2.0 Implementation/Deployment 10%
3.0 Data Security 20%
4.0 Troubleshooting 10%Blueprintを一読した印象では、単純にサービスを知っているだけでは厳しそう、という印象でした。
実際に試験を申し込まないと受験できませんので、申込方法を説明します。
AWSのページで案内している通りKryterion社が試験を提供しています。
ここでの注意点は、英語ページのままサインアップすると試験が英語版しか出てきません。
サイトが日本語ページである事を確認してサインアップしましょう。(英語版を希望する時は逆に英語でサインアップする)サインアップ後に「試験のお申し込み」で「AWS 認定ソリューションアーキテクト-アソシエイトレベル」を選択すると 試験会場の選択そして日時の選択になります。
私は、池袋の会場で申し込みました。池袋の地理に明るい自分はすぐに分かりましたが、不慣れな人は
場所はしっかりと確認しておいた方が良いかもしれません。
大塚方面を線路沿いに進み、公園の向かい向かいにあるそんなに大きくないビルの中になります。
試験日程ですが、まだ会場がそれほど多くないせいか直近1週間は結構混んでいます。
1~2週間先をゆとりをもって予約をするのが良いと思います。試験を申し込んだら完了メールが来ますので、印刷して当日は必ず持参しましょう。
結構大事な事がかいてあります。
「受験者認証コード」を提示しないと受験できなかったり、身分証明書を2種類用意するとか○ 試験対策について
nginxでヘルスチェックのアクセスログを出力させない設定
...おはようございます。インフラの宮下です。
今回はnginxのログ関連の設定になります。目次
はじめに
apacheで良く実施する、setenvの定義を利用して特定NWから来るログを出力しないような設定をnginxでも実施したかったのですが同じ機能が無かったので調べてみました。 使い道としては、ロードバランサーのヘルスチェックや監視サーバからの接続など、ログに出力しない方が都合が良い時に利用できます。 解析するには不要ですし、余計なDISK I/Oも抑えられます。
ngx_http_geo_moduleとは
ドキュメントの通りIPアドレスを変数としてセットできます。
一般的に使われるのは、特定の国のNWは接続拒否するような時にこのモジュールを使う事が多いようです。 そのような場合は、includeして大量に登録された別ファイルで管理する事も可能です。nginxへの設定
nginx.confに設定します。
[shell]# vi nginx.conf http { include mime.types; (中略) # not access_log IP’s geo $no_log { default 0; 172.0.1.0/24 1; } server { (中略) location / { root /var/www/html; index index.cgi index.php index.html index.htm; if ($no_log) { access_log off; } } }[/shell]Solaris10にUSB外付けハードディスクを付けてバックアップを取得する
...おはようございます。インフラの宮下です。普段はクラウド中心なのですが、
solarisにUSBのHDDを付ける事があったのでその手順を紹介します。環境:solaris10
機器:SPARC T2000
HDD:IOデータの500GB USBポータブルハードディスク○1回目
あまり何も考えずにとりあえず接続してみました。messagesにログが出てきて認識されている事は
確認できます。[shell]Apr 9 15:45:11 test-web21 usba: [ID 912658 kern.info] USB 2.10 device (usb4bb,152) operating at hi speed (USB 2.x) on USB 2.0 external hub: storage@1, scsa2usb2 at bus address 7 Apr 9 15:45:11 test-web usba: [ID 349649 kern.info] I-O DATA DEVICE, INC. HDPF-UT 000315C3C1900CEE Apr 9 15:45:11 test-web genunix: [ID 936769 kern.info] scsa2usb2 is /pci@400/pci@2/pci@0/pci@f/pci@0/usb@0,2/hub@4/storage@1 Apr 9 15:45:11 test-web genunix: [ID 408114 kern.info] /pci@400/pci@2/pci@0/pci@f/pci@0/usb@0,2/hub@4/storage@1 (scsa2usb2) online Apr 9 15:45:13 test-web scsi: [ID 583861 kern.info] sd5 at scsa2usb2: target 0 lun 0 Apr 9 15:45:13 test-web genunix: [ID 936769 kern.info] sd5 is /pci@400/pci@2/pci@0/pci@f/pci@0/usb@0,2/hub@4/storage@1/disk@0,0 Apr 9 15:45:13 test-web genunix: [ID 408114 kern.info] /pci@400/pci@2/pci@0/pci@f/pci@0/usb@0,2/hub@4/storage@1/disk@0,0 (sd5) online[/shell]
パーテション情報を確認すると残念ながらNTFSで、なんとsolarisは未対応の為フォーマットエラーになってしまいました。CloudFormationを使いredmineのインスタンスを起動する
...おはようございます。インフラの宮下です。
社内向けredmineが古いのでリプレイスを検討しています。
できるだけ手間をかけずに検証環境を用意したいと思い、AWSのcloudformationを使って
redmineを用意してみました。目次
はじめに
現在稼働しているredmine環境が物理サーバにバージョンがRedmine 1.1.2.stable (MySQL)ととても古いので最終的には入替まで実施したいと思います。
CloudFormationでインスタンスを作成する
ManagementConsoleからCloudformationの画面を開きます。
「Create Stack」で新規作成を開始します。・Name→管理しやすい名前を自由につける。
・Template→Use sample templateの中のSingleInstanceSamplesの中から「Redmine Project Management System」を選ぶ。
※検証環境なので今回は最小化された構成で構築します「Next Step」で次に進みます。
Specify Parametersにそれぞれ値を入れていくのですが、デフォルトではkeyを指定する事ができませんでした。
という事で一旦「Back」で戻ります。
amazonが公開している下記のテンプレートをローカルPCに保存します。
https://s3.amazonaws.com/cloudformation-templates-us-east-1/Redmine_Single_Instance.template
サンプルとの違いは、KeyNameの定義が入っているだけですのでSSHログインしないというのであれば
この作業は不要です。[shell](8行目) “KeyName”: { “Description” : “Name of an existing EC2 KeyPair to enable SSH access to the instances”, “Type”: “String”, “MinLength”: “1”, “MaxLength”: “255”, “AllowedPattern” : “[\\x20-\\x7E]*”, “ConstraintDescription” : “can contain only ASCII characters.” },
SSHでforced-commands-onlyを使ってVIPを付けてみる
...おはようございます。インフラの宮下です。
今回は端末機からサーバの仮想IPを付けたり削除する時のSSH設定に関する手順です。
MHAの内部でIPをfailoverする所をお手製で実施するイメージです。SSH接続でroot権限を実行する方法としては、
・rootで公開鍵認証が出来るようにする。
・ログインユーザがsudo出来るようにしてrootにスイッチする。
・rootで特定のコマンドだけ実施出来るようにする。の3通りありますが、今回はセキュリティレベルがそんなに変わらない3番目の方法を適用したいと思います。
既にsudo出来る環境なら良かったのですが、sudoできない環境なのでforced-commands-onlyを使用します。作業環境は以下の通りです。
接続元のOS:SunOS test 5.10 Generic_147440-19 sun4v sparc sun4v
→端末機と呼びます
接続先のOS:Red Hat Enterprise Linux Server release 6.2 (Santiago)
→サーバ呼びます今時珍しいsolarisが端末と言う事でレトロ感満載の環境と言う事はお察し下さい。
(端末機の設定)
・ログインするユーザの公開鍵を作成します。コマンド毎に鍵を分けるので2個用意します。
[shell]# ssh-keygen -t rsa -N "" -f ~/.ssh/ipadd_command 公開/非公開 rsa 鍵のペアを生成しています。 識別情報が /export/home/test/.ssh/ipadd_command に保存されました。 公開鍵が /export/home/test/.ssh/ipadd_command.pub に保存されました。 鍵のフィンガープリント: 80:1e:4f:8b:2a:0d:22:fb:e2:c7:22:75:70:ef:db:a2 test@test
Mondo Rescue使ってみました(その2)
...おはようございます。インフラの宮下です。
前回「Mondo Rescue」で取得したバックアップデータを使用して、レストアするまでを紹介します。
目次
はじめに
バックアップをとるまでは実行しますが、物理環境だとレストアまではなかなか検証する環境が無いので最初にしっかりとレストアしておくのが賢明だと思います。クラウドはその辺いいですね~♪
バックアップをNFS先に出力した方がMondo Rescueぽいですが、今回はネットワーク環境の都合と作業時間が限られていた為に
ローカル出力してDVDメディアからレストアする方法を選択しました。前回作成したしたisoイメージをDVDに書き込んでおきます。
DVDへの書き込みですが、私は昔からDeepBurnerを愛用しています。レストア実施
DVDメディアを挿入して、サーバを起動します。
mondoのOSが立ち上がってきたら「boot:」プロンプトが出てきますので下の中から方式を選択します。nuke 全自動でリストア。ただ見てるだけで終わります。元データは完全に消去されるので注意は必要。 interactive 対話形式でリストア。カスタマイズやNFS上のISOを指定する時に選択します。 expert シェルプロンプトを起動する。fdiskとかも実施する場合はこちらで。 [shell] boot: nuke [/shell]
今回は全て自動でレストアします。実際「nuke」を入力する以外に何もする事はありませんでした。
DVDメディア1枚(約4GB)なら30分もあればレストアまで完了しました。DVDドライブの書き込み速度が24倍速だと、全ての工程が1時間くらいで終わります。
今後の使い方ですが、ISOデータをAWSで保管するとか
クラウド上での利用方法(AMI作れるからプライベート上)とか
その他の商用ソフトとの比較も実施してみたいです。また、「Mondo Rescue」はUNIXに対応していないのでSolarisでufsdumpの他にもっと快適にできる
方法も探したいと思います。参考サイト
Mondo rescueを用いたシステムリカバリの方法
Mondo Rescueのバックアップデータをリストアするには
Mondo RescueMondo Rescue使ってみました(その1)
...おはようございます。インフラの宮下です。
最近クラウド環境でイメージ作成ばかりしていたので、たまにはオンプレミス環境で
フルバックアップも取得してみます。目次
1.はじめに
定常的にOSバックアップをとるという案件で無く更新作業の前にバックアップを取得する必要があり色々とバックアップツールを検討していました。商用の検証もいくつか実施したのですが、今回はオープンソースの「Mondo Rescue」というバックアップツールを使ってみたいと思います。
オープンソースを使う最大の理由は、コストと納期になりますね。計画的な案件であれば商用のバックアップツールの検討が最初になるかと思います。
「Mondo Rescue」を選択した点としましては、NFSマウント先にファイルが保管できさらにそこからレストアも可能という情報が最大の「それ魅力」です。また、メディアからレストアするのも簡単そう(実際に簡単)なのも良さげでした。2.環境
ロケーション:物理サーバ(富士通製) OS:Red Hat Enterprise Linux Server release 6.4
3.mondorescueのインストール
最初にmondorescueのリポジトリを追加します。
[shell] vi /etc/yum.repos.d/mondorescue.repo [mondorescue] name=rhel 6 x86_64 - mondorescue Vanilla Packages baseurl=ftp://ftp.mondorescue.org//rhel/6/x86_64 #baseurl=ftp://213.30.161.23//rhel/6/x86_64 enabled=0 gpgcheck=1 gpgkey=ftp://ftp.mondorescue.org//rhel/6/x86_64/mondorescue.pubkey #gpgkey=ftp://213.30.161.23//rhel/6/x86_64/mondorescue.pubkey [/shell]
準備完了と言う事でmondorescueリポジトリを使ってmondo resucue本体をインストールします。
[shell] # yum install mondo –enablerepo=mondorescue =================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================== Installing: mondo x86_64 3.0.4-1.rhel6 mondorescue 1.3 M Installing for dependencies: afio x86_64 2.5-1.rhel6 mondorescue 81 k buffer x86_64 1.19-4.rhel6 mondorescue 24 k mindi x86_64 2.1.7-1.rhel6 mondorescue 331 k mindi-busybox x86_64 1.18.5-3.rhel6 mondorescue 306 k syslinux x86_64 4.02-4.el6 mondorescue 855 kMysqlのHAとトラブル事例
...久しぶりの更新になります。プラットフォームの宮下です。
先日開催されました、July Tech Festa2013というイベントの中の1コマで何と私が発表をさせて頂きました。
その時使用した資料をアップしますので興味のある方は是非一読下さい。[slideshare id=24320385&doc=mysqlha-130716215401-phpapp02]
mysqlのHA構成のデザインパターン紹介を経験談を交えて話させて頂きました。
とても緊張してしまって肝心のトラブル事例がお話出来ませんでした。このブログでは、包み隠さずトラブルのレポートが出来ればと思います。
今回のテーマは、小宮先生のレポートを多分に活用させて頂いています。
次回こそは、私の成果を発表したいもんです。それではまた近いうちに更新します。