Apache2.2.xと2.4.xでのアクセス制限方法の違い
勉強のためZabbix3.0を入れたのですが、 Apache 2.4.xを使ったところアクセス制限の書き方が変わっていたのでメモしておきます。
2.2.xの時のエントリです。
Apache 2.4.6で試してみた
以下、試した時のバージョンです。
[root@localhost conf.d]# httpd -v Server version: Apache/2.4.6 (CentOS)
2.4.6だとこんな感じで書きます。
[root@localhost conf.d]# cat zabbix.conf # # Zabbix monitoring system php web frontend # #Alias /zabbix /usr/share/zabbix Alias /zabbix /var/www/html/zabbix <Directory "/var/www/html/zabbix"> Options FollowSymLinks AllowOverride None Require all granted php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 # php_value date.timezone Europe/Riga </Directory>
Apache2.2.xと2.4.xでの書き方の違い
全てアクセス許可
Apache2.2.x
Allow from all
Apache2.4.x
Require all granted
全てアクセス拒否
Apache2.2.x
deny from all
Apache2.4.x
Require all denied
特定の接続元を指定する
Apache2.2.x
allow from
deny from
Apache2.4.x
require ip
require not ip
エラーログ
間違えたら/var/log/zabbix/zabbix_server.logに出力が出ると思いますので確認してください。
[Sat Nov 14 23:28:06.550481 2015] [authz_core:error] [pid 15736] [client 192.168.1.100:59410] AH01630: client denied by server configuration: /usr/share/zabbix
[Sat Nov 14 23:52:48.367884 2015] [core:error] [pid 12992] (13)Permission denied: [client 192.168.1.100:53259] AH00035: access to /zabbix/index.php denied (filesystem path '/var/www/html/zabbix/index.php') because search permissions are missing on a component of the path
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)
- 作者: 鶴長鎮一
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/23
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 109回
- この商品を含むブログ (14件) を見る
改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plus)
- 作者: 寺島広大
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
RedshiftへSQLWorkbench/Jで接続してみる
redshiftへSQLWorkbench/Jで接続する方法です。
手順は以下の通りです。ポイントは 接続方法に合わせてDriverを選択するという点です。 2015年11月8日時点でpostgresqlの接続もサポートされているようです。
- SQLWorkbench/Jをインストール
- Redshift用のDriverをインストール
- JDBCのURLを確認する
- 各種パラメータを設定し接続
SQLWorkbench/Jをインストール
公式HPのDownloadsから使用するOSに合わせてStable releaseからダウンロードしインストールします。 MAC OSXの場合、通常のアプリケーションと大差はないので割愛します。
Redshift用のDriverをインストール
今回はpostgresqlでははなくJDBCで接続します。Driverはこの記事を記載した時点で以下の通りです。
JDBC 4.1 互換ドライバ: https://s3.amazonaws.com/redshift-downloads/drivers/RedshiftJDBC41-1.1.7.1007.jar このドライバーのクラス名は com.amazon.redshift.jdbc41.Driver です。
SQLWorkbench/Jの左下のManage Driverから上記のDriverをimportします。class名はcom.amazon.redshift.jdbc41.Driver
です。
RedshiftのJDBC URLを確認
Amazon Management Consoleで以下から確認します。
Clusters- > YourClusterName
-> Configuration -> Cluster Database Properties -> JDBC URL
RedshiftへSQLWorkbench/Jを使用して接続
先ほどimportしたRedshift用のDriverとJDBC URL、Master Username/Passwordを設定します。
接続が問題なければ以下の通りクエリを投げることが可能です。
実際にクエリを投げてみるのは各自データ内容に合わせてお好みで。 勉強用だと無料枠を超えてしまうのが痛いですね。
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
Amazon Redshift Getting Started Guide (English Edition)
- 作者: Amazon Web Services
- 発売日: 2013/02/21
- メディア: Kindle版
- この商品を含むブログを見る
データベース徹底攻略 (WEB+DB PRESS plus)
- 作者: 松信嘉範,羽生章洋,ミック,奥野幹也,松下雅和,桑野章弘,青木峰郎,ひろせまさあき,小林篤,島田慶樹,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/15
- メディア: 大型本
- この商品を含むブログ (5件) を見る
データ分析が支えるスマホゲーム開発 ~ユーザー動向から見えてくるアプリケーションの姿~
- 作者: 越智修司,高田敦史,丸山弘詩
- 出版社/メーカー: インプレスジャパン
- 発売日: 2014/04/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
tail -fの結果にタイムスタンプをつける方法のメモ
メモです。アプリからログに書き込まれたタイミングを確認するなど、出力にタイムスタンプをつけたい時などに使います。
tail -f error.log | while read line; do printf "$(date -u '+%F %T%z')\t$line\n"; done
出力は以下のような感じです。
2015-11-06 23:14:38+0000 Nov 6 23:14:12 komei login[3783]: USER_PROCESS: 3783 ttys000
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
- 作者: 大角祐介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/06/06
- メディア: 大型本
- この商品を含むブログ (4件) を見る
Linuxシステム[実践]入門 (Software Design plus)
- 作者: 沓名亮典
- 出版社/メーカー: 技術評論社
- 発売日: 2013/07/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (13件) を見る
zabbix_senderで複数の値を一括登録する
Zabbixは非常に便利で、Agentでの監視の他に自身で取得可能なあらゆる情報をZabbix senderを使用してサーバへ送信することが可能です。
Zabbix_Senderの使い方
$ zabbix_sender -z zabbix -s "Linux DB3" -k db.connections -o 43
z - Zabbix サーバのホスト(IP アドレスでの指定でも可) s - 監視対象のホスト名 (Zabbix フロントエンドで登録されたもの) k - アイテムキー o - 送信する値
Zabbix_Senderで複数の値を投入する
上記の例だと一つのkeyに対して値を投入していますが、複数のkeyを扱うことが可能です。監視対象側の負荷を軽減することができるので非常に重宝します。
ファイルからデータを投入する
$ zabbix_sender -z 127.0.0.1 -i /tmp/traptest.txt Info from server: "Processed 250 Failed 0 Total 250 Seconds spent 0.002668" Info from server: "Processed 50 Failed 0 Total 50 Seconds spent 0.000540" sent: 300; skipped: 0; total: 300
-iでファイルを指定します。ファイルの中身はシンプルに以下のような内容でOKです。
<hostname> <key> <value> <hostname> <key> <value> <hostname> <key> <value> <hostname> <key> <value>
直接データを投入する
ファイルに書き出す必要がない場合は以下の通り直接コマンドラインから複数のデータを扱うことも可能です。
$ echo -n -e '<hostname> <key> <value>\n<hostname> <key> <value>' | zabbix_sender -z 127.0.0.1 -p 10051 -i - info from server: "processed: 2; failed: 0; total: 2; seconds spent: 0.000066" sent: 2; skipped: 0; total: 2
他にもzabbix_senderとディスカバリを組み合わせることでitemを動的に作成するという小技もありますので、時間を見つけて書いておきたいと思います。
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
改訂版 Zabbix統合監視実践入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plus)
- 作者: 寺島広大
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
サーバ/インフラエンジニア養成読本 ログ収集~可視化編 [現場主導のデータ分析環境を構築!] (Software Design plus)
- 作者: 鈴木健太,吉田健太郎,大谷純,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/08
- メディア: 大型本
- この商品を含むブログ (1件) を見る
haproxyのステータス確認
haproxyのステータス確認方法をいつも忘れてしまうのでメモ代わりに書いておきます。
haproxyのsocketをcatするsocat
コマンドを使います。
以下のように書くことで8080番への入力を標準出力に書き込むことができます。 簡単dす。
$ socat tcp-listen:8080 stdout
haproxyではechoを使って取得したいログの種別を指定します。 まずはバージョン情報など基本的な情報を取ってみます。
root@gw01:~# echo "show info" | socat unix-connect:/etc/haproxy/sock stdio Name: HAProxy Version: 1.4.24 Release_date: 2013/06/17 Nbproc: 1 Process_num: 1 Pid: 24498 Uptime: 0d 0h08m59s Uptime_sec: 539 Memmax_MB: 0 Ulimit-n: 4013 Maxsock: 4013 Maxconn: 2000 Maxpipes: 0 CurrConns: 1 PipesUsed: 0 PipesFree: 0 Tasks: 2 Run_queue: 1 node:gw01 description:
コマンド一覧をhelpで取ってみました。
clear counters : clear max statistics counters (add 'all' for all counters) help : this message prompt : toggle interactive mode with prompt quit : disconnect show info : report information about the running process show stat : report counters for each proxy and server show errors : report last request and response errors for each proxy show sess [id] : report the list of current sessions or dump this session get weight : report a server's current weight set weight : change a server's weight set timeout : change a timeout setting disable server : set a server in maintenance mode enable server : re-enable a server that was previously in maintenance mode
backendのステータスなどはshow stat
で確認可能です。
root@gw01:~# echo "show stat" | socat unix-connect:/etc/haproxy/sock stdio # pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max,check_status,check_code,check_duration,hrsp_1xx,hrsp_2xx,hrsp_3xx,hrsp_4xx,hrsp_5xx,hrsp_other,hanafail,req_rate,req_rate_max,req_tot,cli_abrt,srv_abrt, 07625016-88cc-4533-a0b0-cd006b54c110,FRONTEND,,,0,0,2000,0,0,0,0,0,0,,,,,OPEN,,,,,,,,,1,1,0,,,,0,0,0,0,,,,,,,,,,,0,0,0,,, 2c8ff70e-1345-4642-8689-1ce7d74506a8,6f37e25b-713e-4c31-8671-aec5c23a878e,0,0,0,0,,0,0,0,,0,,0,0,0,0,UP,1,1,0,0,0,1278,0,,1,2,1,,0,,2,0,,0,L4OK,,3,,,,,,,0,,,,0,0, 2c8ff70e-1345-4642-8689-1ce7d74506a8,BACKEND,0,0,0,0,0,0,0,0,0,0,,0,0,0,0,UP,1,1,0,,0,1278,0,,1,2,0,,0,,1,0,,0,,,,,,,,,,,,,,0,0,
こんな感じで必要な情報だけ引っ張ります。svname
とstatus
をピックアップしています。
root@gw01:~# echo "show stat" | socat unix-connect:/etc/haproxy/sock stdio | grep -v -e '^#\|^$' | cut -d ',' -f 2,18 --output-delimiter=':' FRONTEND:OPEN 6f37e25b-713e-4c31-8671-aec5c23a878e:UP BACKEND:UP
- 作者: みやたひろし
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2014/10/05
- メディア: オンデマンド (ペーパーバック)
- この商品を含むブログを見る
- 作者: 編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2015/06/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: みやたひろし
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/06/04
- メディア: 大型本
- 購入: 4人 クリック: 204回
- この商品を含むブログ (4件) を見る
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
売り上げランキング: 111,502
sflowもFluentd+Elastic Searchに入れて可視化してみた
以前にNetflowについて書いたのですが、sflowもelastcsearchに入れたいなと思って色々調べてみました。ちなみに前回からkibanaのバージョンをあげましてkibana 4はこんな画面になってます。検証用のデータですが気持ち的にIPアドレスは隠しました。
ホワイトを基調のデザインに一新されており個人的には好感が持てるデザインになっています。機能的にはグラフオプションが強化されて実現できることが多くなっています。
- kibana 4になり、対応するElastic Searchのバージョンも1.4以降に変更になっているため注意が必要です
調査フェーズ
logstashを使ってElastic Searchへ入れるパターン
まず、調べてたところlogstashで以下のような方法があるようなので少し調査。
https://github.com/NETWAYS/sflow
Tiny sflow collector and parser script based on eventmachine. It listens for sflow v5 samples, parses them and sends it to logstash.
インストール自体は楽そうですが、issuesのやりとりやflow sourceを都度設定ファイルやhostsに書かなければいけない(っぽい)点とsnmpがなぜか絡んでくるのがどうしてもすっきりせずパスしました。
(できれば設定はtd-agent.confで統一したいという思いもありすいません)
sflowをnetflowに変換してあれこれするパターン
世の中には便利なものがあるもので、今回sflowtool
を使うことにしました。結局、NETWAYS/sflowのissueでもsflowtoolをwrapperとして使用する方法について記載がありました。
sflowtoolは名前の通りsflowを扱うためのツールなのですが、任意のポートで受信し他のコレクタに渡したりcsvで吐き出したり、pcap形式に落としたり、あと今回重要なnetflowに対応したコレクタにフローを飛ばすことも可能です。
ということで、sflowtool -> fluentd -> elastic searchの流れでデータを注入することにしました。
sflowtoolインストール
最新版はgithubにあります。Versionは3.28でした。
git clone https://github.com/kplimack/sflowtool.git cd sflowtool/
cloneしたら、configure / make / make installしてください。
パスが通っていれば$ sflowtool
で起動します。
参考)以下のログが出た人へ
v6 socket() creation failed, Address family not supported by protocol
デフォルトでlisten on both IPv4 and IPv6 socketsなので、ipv6をdisableにしている人は-4
オプションを使ってください。
sflowを受信してみる
起動して受信すると以下の項目が値と共に出力されます。
startDatagram datagramSourceIP datagramSize unixSecondsUTC datagramVersion agentSubId agent packetSequenceNo sysUpTime samplesInPacket startSample ---------------------- sampleType_tag sampleType sampleSequenceNo sourceId meanSkipCount samplePool dropEvents inputPort outputPort flowBlock_tag flowSampleType headerProtocol sampledPacketSize strippedBytes headerLen dstMAC srcMAC decodedVLAN decodedPriority IPSize ip.tot_len srcIP dstIP IPProtocol IPTOS IPTTL TCPSrcPort TCPDstPort TCPFlags endSample ---------------------- endDatagram =================================
NetFlowに飛ばしたいのであれば以下のオプションを使います。
To forward Cisco NetFlow v5 records to UDP port 9991 on host collector.mysite.com, the options would be: % ./sflowtool -p 6343 -c collector.mysite.com -d 9991
Fluentd(td-agent)で受けてstdoutに出るようtagをdebugにしてみました。一回sflowtoolが受信するのでhostが127.0.0.1になってしまうのが残念です。ただ、本来のNetflowへ変換という意味ではVersion 5へしっかりと変換してくれました。
2015-09-02 23:23:10 +0900 debug.netflow: {"version":"5","flow_seq_num":"19","engine_type":"0","engine_id":"0","sampling_algorithm":"0","sampling_interval":"0","flow_records":"1","ipv4_src_addr":"1.1.4.1","ipv4_dst_addr":"1.1.7.1","ipv4_next_hop":"0.0.0.0","input_snmp":"1026","output_snmp":"1026","in_pkts":"32768","in_bytes":"1507328","first_switched":"2015-09-02T23:23:10.000Z","last_switched":"2015-09-02T23:23:10.000Z","l4_src_port":"52193","l4_dst_port":"80","tcp_flags":"16","protocol":"6","src_tos":"0","src_as":"0","dst_as":"0","src_mask":"0","dst_mask":"0","host":"127.0.0.1"}
ここからのElastic Searchへの挿入は前回と同様です。
その他
- Elastic Search pluginで
@timestamp
と_source
は挿入されるのでkibanaから見ると前回と同じ仕様です - sflowtoolが増えましたが、既存のFluentdの設計を踏襲できるのでシンプルで分かりやすいと思っています
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
サーバ/インフラエンジニア養成読本 ログ収集~可視化編 [現場主導のデータ分析環境を構築!] (Software Design plus)
- 作者: 鈴木健太,吉田健太郎,大谷純,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/08
- メディア: 大型本
- この商品を含むブログ (1件) を見る
高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)
- 作者: Rafal Kuc (lにストローク符号、cにアクサン・テギュ付く),Marek Rogozinski (nにアクサン・テギュ付く)
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
Network機器をAnsibleで操作(?)してみた
RAWコマンドならいけるよねということで夜な夜な試してみましたメモです。今回、showコマンドやwr memなどしか試していないです。個人的には設定投入はエラー処理とか考えると他に任せたいなと思います。
Network機器でAnsibleの環境
新たに準備するのが面倒だったので以前に使ったvirtual boxで。古くてすいません。 opensshのバージョンは気にした方が良いです。理由は後述します。
$ ansible --version ansible 1.9.1 $ cat /etc/redhat-release CentOS release 6.5 (Final) $ sudo yum list installed | grep openssh openssh.x86_64 5.3p1-112.el6_7 @updates
Ansible設定
SFTPが開いていないデバイスのために念のためscp_if_ssh
をTrue
にしておきます。
セッションは1分あれば十分と判断し、60s
にしています。
$ more ansible.cfg [defaults] host_key_checking = False transport=ssh log_path=ansible.log [ssh_connection] scp_if_ssh=True ssh_args = -o ControlMaster=auto -o ControlPersist=60s
インベントリはメーカーごとに分けています。ここは環境により分けて頂ければと思います。
$ more hosts [all:vars] ansible_ssh_user=<username> ansible_ssh_pass=<password> [cisco] 1.1.1.1
冒頭に書いた通りrawモジュールを使ってコマンドを打ちます。 show runを出力するtaskと出力をローカルに保存するtaskを作っています。
$ more show-run.yml --- - hosts: cisco gather_facts: no tasks: - name: sh run raw : "show run" register: show_run - name: sh run output local_action: shell /bin/echo "{{ show_run.stdout }}" > /home/komei/ansible- test/sh_run_{{ inventory_hostname }}.txt
$ ansible-playbook show-run.yml -i hosts PLAY [cisco] ****************************************************************** TASK: [sh run] **************************************************************** ok: [1.1.1.1] TASK: [sh run output] ********************************************************* changed: [1.1.1.1 -> 127.0.0.1] PLAY RECAP ******************************************************************** 1.1.1.1 : ok=2 changed=1 unreachable=0 failed=0
$ ls -la -rw-rw-r-- 1 komei komei 689 Aug 24 23:55 sh_run_1.1.1.1.txt
1つイケてないのがインデントがなくすべて前詰めになってしまう点です。。copyコマンド入れてもプロンプトが出るし何かうまい方法ないかな。。 スイッチ側の設定を書いてないですが、Ansibleなので基本的にSSH開けておけばOKです。たた、個人的にはprivilegeレベルを下げたユーザでアクセスさせたいため、show runではなくwr mem & show confで動かすつもりです。↓みたいな感じ。
$ more show-conf.yml --- - hosts: cisco gather_facts: no tasks: tasks: - name: wr mem raw : "wr mem" - name: sh conf raw : "show conf" register: show_conf - name: sh conf output local_action: shell /bin/echo "{{ show_conf.stdout }}" > /home/komei/ansible -test/sh_conf_{{ inventory_hostname }}.txt
その他
エラーが出た時の対処
文言通りsshpassを入れてください
TASK: [sh run] **************************************************************** fatal: [1.1.1.1] => to use the 'ssh' connection type with passwords, you must install the sshpass program $ sudo yum install sshpass
opensshのバージョンによってはparamikoを使ってしまってtty周りで苦戦するかもしれません。
http://docs.ansible.com/ansible/intro_getting_started.html
However, when using Enterprise Linux 6 operating systems as the control machine (Red Hat Enterprise Linux and derivatives such as CentOS), the version of OpenSSH may be too old to support ControlPersist. On these operating systems, Ansible will fallback into using a high-quality Python implementation of OpenSSH called ‘paramiko’.
使いどころ
全台のwr memくらいなら有りかなくらいです。バージョンとかはSNMPでGETすれば良いと思いますし。ただ、RAWコマンドがうまく通らないメーカーもあったので、うーんという感じです。もう少し頑張ればわかるかな。。バックアップの仕組みはインデントの件もあるので、copyコマンドで吐き出した方が良いと思います。
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
- 作者: 若山史郎
- 発売日: 2014/07/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: Lorin Hochstein
- 出版社/メーカー: O'Reilly Media
- 発売日: 2015/04/29
- メディア: Kindle版
- この商品を含むブログを見る