[Apache] Logフォーマット

/etc/httpd/httpd.conf

CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
  • %h: リモートホスト。つまりApacheにアクセスしてきたクライアントPCのIPアドレスとなります。
  • %l: リモートログ名。mod_identモジュールがロードされており、IdentityCheckディレクティブがOnになっている場合のみ表示されます。それ以外の場合は『-』と表示されます。
    %u リモートユーザ。
    %t リクエストを受信した時刻。
    %r リクエストの最初の行。
    %>s %sはステータスコード。内部でリダイレクトされた場合でも元々のステータスコードを出力。%>sはリダイレクトされた場合最後のステータスコードを出力。
    %b HTTPヘッダを除くレスポンスのバイト数。0バイトの場合は『-』と表示されます。
    %{Referer}i サーバが受信したリクエストヘッダのReferer。
    %{User-Agent}i サーバが受信したリクエストヘッダのUser-Agent。

[AWS] ElastiCache redis basic

特徴

  • Amazon EC2、Amazon CloudWatch、AWS CloudTrail、Amazon SNS など他の AWS のサービスとの連携。
  • node の障害を自動検出、復旧。

replication

  • cluster の read replica。(ElastiCache API、AWS CLI では replication groups と呼ばれる)
  • 単一 shard & 複数 node (Cluster 無効)、もしくは複数 shard & 複数 node (cluster 有効)の構成となる。

有効/無効の差異
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/UserGuide/Replication.Redis-RedisCluster.html

redis snapshot の取得

  • 2.8.22 以降の redis では、同期、保存中に swap を利用せず多くのメモリを消費することができる。

maxmemory

  • instance type 毎に固定で値が決まっている。
  • maxmemory パラメータは変更できない。

maxmemory-policy

  • memory 最大使用量に達した際に、適用される削除ポリシー
  • https://redis.io/topics/lru-cache
  • 設定された maxmemory を超えると、パラメータグループで設定された maxmemory-policy に従い、容量を確保する。

policy は下記の通り。
* noeviction: error を返す。error を返すだけなので、client がさらに増えたら maxmemory を超える可能性がある。
* allkeys-lru: 直近利用された (LRU) key を削除する。
* volatile-lru: expire が設定され、直近利用された (LRU) key のみを削除する。
* allkeys-random: ランダムに key を削除。
* volatile-random: expire が設定された key のみ、ランダムに key を削除。
* volatile-ttl: expire が設定され、TTL が短い key を削除する。

AOF (Redis Append Only Files)

scale up

  • 自動。

scale down

  • 手動でやる必要がある。

monitoring

CPU 使用率

cloudwatch では、Redis はシングルスレッドであるため、メトリクスのCPU 使用率に CPU のコア数を乗算する必要がある。

AWS CLI

[code lang=text]
$ aws elasticache describe-cache-clusters –profile xxx
// endpoint 取得
$ aws elasticache describe-cache-clusters –cache-cluster-id mycluster –show-cache-node-info

$ aws elasticache describe-replication-groups –replication-group-id myreplgroup
[/code]

ERROR: for xxx Cannot start service xxx: driver failed programming external connectivity on endpoint (): Bind for 0.0.0.0:80 failed: port is already allocated

ローカル上で docker-compose stop -> docker-compose rm -f
ネットワークキャッシュを消さないと、接続プロセスが残る。

$ docker-compose up -d
ERROR: for xxx  Cannot start service xxx: driver failed programming external connectivity on endpoint (): Bind for 0.0.0.0:80 failed: port is already allocated
$ lsof -i -P | grep "LISTEN"
Box\x20Lo   476 xxx    5u  IPv4 0xdb0169c9ab3e7445      0t0  TCP localhost:17223 (LISTEN)
Box\x20Lo   476 xxx    6u  IPv6 0xdb0169c9ac255215      0t0  TCP localhost:17223 (LISTEN)
BetterTou 20148 xxx   11u  IPv4 0xdb0169c9ce631d3d      0t0  TCP *:62053 (LISTEN)
BetterTou 20148 xxx   12u  IPv6 0xdb0169c9ac254795      0t0  TCP *:62053 (LISTEN)
RoyalTSX  78179 xxx   16u  IPv4 0xdb0169c9d3c77445      0t0  TCP localhost:54890 (LISTEN)
vpnkit    79289 xxx   27u  IPv4 0xdb0169c9cf03c445      0t0  TCP *:80 (LISTEN) # このプロセス

Mac の Docker ホスト上へ screen コマンドにて tty 経由で接続を行い、直接削除する。

$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
$ docker stop $(docker ps -a -q)
$ docker rm $(docker ps -a -q)
ctrl-a, ctrl-k の後に y
lsof -i -P | grep "LISTEN"
Box\x20Lo   476 xxx    5u  IPv4 0xdb0169c9ab3e7445      0t0  TCP localhost:17223 (LISTEN)
Box\x20Lo   476 xxx    6u  IPv6 0xdb0169c9ac255215      0t0  TCP localhost:17223 (LISTEN)
BetterTou 20663 xxx   11u  IPv4 0xdb0169c9cc1e6f2d      0t0  TCP *:62053 (LISTEN)
BetterTou 20663 xxx   12u  IPv6 0xdb0169c9ac254795      0t0  TCP *:62053 (LISTEN)

これで up できるようになる。

$ docker-compose up -d

tmux basic

環境

  • tmux 2.4

できること

  • ターミナルの中に仮想ターミナルを起動可能
  • session のバックグラウンド起動
  • remote session 維持

用語

  • attach
    • バックグラウンドで起動しているセッションをコンソールへアタッチ
  • detach
    • セッションをターミナルから切り離す
  • session
    • tmux 管理下の仮想端末全体
  • window
    • session 内の仮想端末画面全体
  • pane
    • それぞれの pane が仮想端末
    • window 内の分割された画面

コマンド

operation command
pane縦分割 prefix, %
pane横分割 prefix, w
pane移動(上) prefix, k
pane移動(下) prefix, j
pane移動(右) prefix, l
pane移動(左) prefix, h
pane幅調整 prefix, shift + l(右) OR h(左) OR k(上) OR j(下)
新規window prefix, c
window移動 prefix, n OR prefix, p
window名称変更 prefix, ,
detach prefix, d
attach tmux a -t {セッション名}
window一覧 prefix, w
session 名変更 tmux rename -t {変更前} {変更後}
session 一覧 tmux ls
session 新規作成 tmux or tmux new -s {セッション名}
session 移動 prefix, s
session 削除(1つずつ) tmux kill-session
session 削除 tmux kill-session -t {セッション名}
session 全終了 tmux kill-server
コピー prefix, [

install & setting

[code lang=text]
$ xcode-select –install
$ brew install tmux

// copy用パッケージインストール
$ brew install reattach-to-user-namespace

// tmux設定ファイルを編集
$ tmux source-file ~/.tmux.conf
[/code]

Mac US キーボードでは、 caps lock を ctrl にキーバインドしておくと使い易い。

[Jenkins] 2.85以降のバージョンにおけるプロトコルエラー

環境

環境 Ver.
Jenkins 2.74->2.86へ更新

エラー

https://jenkins.io/security/advisory/2017-10-11/
上記セキュリティリスクが報告された為、2.74から2.86へバージョンを更新した。

This Jenkins instance uses deprecated protocols: JNLP-connect,JNLP2-connect. It may impact stability of the instance. If newer protocol versions are supported by all system components (agents, CLI and other clients), it is highly recommended to disable the deprecated protocols.

このJenkinsでは、廃止予定のプロトコル “JNLP-connect”、”JNLP2-connect”を使用している。
新しいプロトコルのバージョンがシステム構成要素(エージェント、CLI等)でサポートされている場合、インスタンスの安定性に影響する可能性がある為、廃止予定のプロトコルを無効にすることを推奨する。

2.85以降のバージョンで発生するようだ。

対処方法

http://{YOUR_DOMAIN}/configureSecurity/ のページにて、”Agent Protocols” のチェックを全てはずし、廃止予定のプロトコルを全て無効にする。