ZooKeeperに接続しているコネクション一覧

Apache ZooKeeperにおいて表題の通り。

■ 環境

Apache ZooKeeper 3.4.6

■ 4文字コマンド

ふたつの4文字コマンドで表題の結果を得ることができる。`cons`と`stat`である。

`cons`はそのままコネクションの一覧を取得。`stat`はコネクションの一覧とZooKeeperサーバの状態を取得することができる。各コネクションの情報についても`stat`で得られる結果よりも`cons`で得られる情報の方が多い。下記にそれぞれ取得してみたものを表示する。

`cons`

$ echo cons | nc localhost 2181
 /192.168.33.11:47949[1](queued=0,recved=254366,sent=254366,sid=0x151af8e909e001f,lop=PING,est=1453205223034,to=10000,lcxid=0x0,lzxid=0x3c8f7,lresp=1454053106380,llat=0,minlat=0,avglat=0,maxlat=5)
 /192.168.33.11:37597[1](queued=0,recved=282630,sent=282630,sid=0x151af8e909e001e,lop=PING,est=1453205224036,to=10000,lcxid=0x6e68,lzxid=0x3c8f7,lresp=1454053107375,llat=1,minlat=0,avglat=0,maxlat=22)
 /127.0.0.1:38444[0](queued=0,recved=1,sent=0)
 /192.168.110.151:47948[1](queued=0,recved=339112,sent=339112,sid=0x151af8e909e0020,lop=PING,est=1453205223034,to=10000,lcxid=0x14b0a,lzxid=0x3c8f7,lresp=1454053106380,llat=0,minlat=0,avglat=0,maxlat=34)
 /192.168.33.11:47950[1](queued=0,recved=2583739,sent=2583763,sid=0x151af8e909e0021,lop=GETC,est=1453205223034,to=10000,lcxid=0x238b1d,lzxid=0x3c8f7,lresp=1454053108920,llat=0,minlat=0,avglat=0,maxlat=19)
 /192.168.33.11:42157[1](queued=0,recved=254370,sent=254371,sid=0x151af8e909e001d,lop=PING,est=1453205224037,to=10000,lcxid=0x4,lzxid=0x3c8f7,lresp=1454053107376,llat=0,minlat=0,avglat=0,maxlat=4)

$

`stat`

$ echo stat | nc localhost 2181
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
 /127.0.0.1:38632[0](queued=0,recved=1,sent=0)
 /192.168.33.11:47949[1](queued=0,recved=254442,sent=254442)
 /192.168.33.11:37597[1](queued=0,recved=282716,sent=282716)
 /192.168.33.11:47948[1](queued=0,recved=339214,sent=339214)
 /192.168.33.11:47950[1](queued=0,recved=2584450,sent=2584474)
 /192.168.33.11:42157[1](queued=0,recved=254446,sent=254447)

Latency min/avg/max: 0/0/41
Received: 14954939
Sent: 14955199
Connections: 6
Outstanding: 0
Zxid: 0x3c909
Mode: standalone
Node count: 60
$

どのホストからの接続が多いのかを見ることができるであろう。上記は”standalone“で稼働しているZooKeeperに対して、Dockerのクラスタ情報を格納しているのだがコネクションが5本も張られているようである。ちなみに”192.168.33.11“でどのプロセスが接続しているのかを確認してみる。

$ ssh 192.168.33.11
[withsin@192.168.33.11 ~]$ sudo lsof -i :47949

これから3つは”docker“プロセスが接続していることを確認できた。しかし下記2つのポートはどのプロセスが使用しているのか前述のコマンドでは判明しなかった。

  • 37597
  • 42157

これはまた別途調べる方法について確認する。

以上。

Packetbeat on Mac

表題の通り。

■ 環境

  • Mac OSX (10.10.5)
  • PacketBeat 1.0.1
  • Elasticsearch 2.1.1
  • Kibana 4.3.1
  • Docker 1.9.1
  • Docker Compose 1.5.2

■ Elasticsearch + Kibana

これは先日の下記エントリで作成した`docker-compose.yml`を使用して、Dockerに起動する。

Elasticserch + Kibana on Docker Compose

$ docker-compose up -d
Creating elasticsearch
Creating kibana
$
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
79bc76f8e520        kibana              "/docker-entrypoint.s"   10 seconds ago      Up 10 seconds       0.0.0.0:5601->5601/tcp             kibana
55c45961eed4        elasticsearch       "/docker-entrypoint.s"   10 seconds ago      Up 10 seconds       9300/tcp, 0.0.0.0:9200->9200/tcp   elasticsearch
$

■ Packetbeat

公式ページの”Getting Started“を参考にする。

Getting Started
https://www.elastic.co/guide/en/beats/packetbeat/current/packetbeat-getting-started.html

Macへのインストールは下記。

$ curl -L -O https://download.elastic.co/beats/packetbeat/packetbeat-1.0.1-darwin.tgz
$ tar zxf packetbeat-1.0.1-darwin.tgz
$ cd packetbeat-1.0.1-darwin

設定は特に変更せずデフォルトままにする。Elasticsearchを起動しているのはDockerなので、DockerホストのIPに設定変更をしたのみである。

156     hosts: ["192.168.99.100:9200"]

テンプレートを投入。

$ curl -XPUT 'http://192.168.99.100:9200/_template/packetbeat' -d@packetbeat.template.json
{"acknowledged":true}

Packeteatを起動する。

$ sudo ./packetbeat -e -c packetbeat.yml -d "publish"

■ Kibana

Kibanaから確認。Dashboardは”Topbeat“の時と同様である。

$ cd beats-dashboard-1.0.0
$ ./load.sh http://192.168.99.100:9200/

とここまでやって、どうやらデータが投入できていないようである。

packetbeat-001

いまいちわからないので調査しよう。

以上。

■ 関連

Filebeat on Mac

表題の通り。

■ 環境

  • Mac OSX (10.10.5)
  • Filebeat 1.0.1
  • Elasticsearch 2.1.1
  • Kibana 4.3.1
  • Docker 1.9.1
  • Docker Compose 1.5.2

■ Elasticsearch + Kibana

これは先日の下記エントリで作成した`docker-compose.yml`を使用して、Dockerに起動する。

Elasticserch + Kibana on Docker Compose

$ docker-compose up -d
Creating elasticsearch
Creating kibana
$
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
79bc76f8e520        kibana              "/docker-entrypoint.s"   10 seconds ago      Up 10 seconds       0.0.0.0:5601->5601/tcp             kibana
55c45961eed4        elasticsearch       "/docker-entrypoint.s"   10 seconds ago      Up 10 seconds       9300/tcp, 0.0.0.0:9200->9200/tcp   elasticsearch
$

■ Filebeat

公式ページの”Getting Started“を参考にする。

Getting Started
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-getting-started.html

Macへのインストールは下記。

$ curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.0.1-darwin.tgz
$ tar zxf filebeat-1.0.1-darwin.tgz
$ cd filebeat-1.0.1-darwin

設定は特に変更せずデフォルトままにする。Elasticsearchを起動しているのはDockerなので、DockerホストのIPに設定変更をしたのみである。

155     hosts: ["192.168.99.100:9200"]

テンプレートを投入。

$ curl -XPUT 'http://192.168.99.100:9200/_template/filebeat' -d@filebeat.template.json
{"acknowledged":true}

Filebeatを起動する。

$ sudo ./filebeat -e -c filebeat.yml

Getting Started“では、`-d “publish”`も付けているが、コンソールに大量にログが出力されるので省いた。

■ Kibana

Kibanaから確認。”Topbeat“の時にはダッシュボードが公開されていたが、Filebeat用には入っていなかったのでデータが投入できているかを確認する。

filebeat-001

以上。

■ 関連

Macで画像ファイルを1つのPDFに変換

表題の通り。複数の画像ファイル(jpg)を1つのPDFファイルに変換したい。

■ 環境

  • Mac OSX (10.10.5)
  • Homebrew
  • ImageMagick

■ ImageMagick

画像をPDFに変換するには「プレビュー」を使用する方法もあるのだが、画像の大きさや縦横がまちまちだと、あまり見栄えが良いものにはならない。よって”ImageMagic“を使用して実現させることにした。

$ brew install imagemagick

■ 変換

画像のあるディレクトリで下記コマンドを実行する。

$ convert *.jpg [出力ファイル].pdf

思い通りのPDFファイルとなって個人的に満足である。

以上。

■ 関連

画像サイズの変更

only exposed by the Leader

Apache ZooKeeperにおいて、4文字コマンド`mntr`で取得できる項目の中から”Leader“のZooKeeperサーバだけが返す項目があるようである。

■ 環境

  • Apache ZooKeeper 3.4.6
  • Amazon Linux

■ mntr

先日のエントリでは、接続した先がStandaloneであったので気がつかなかった。アンサンブルが構築されたZooKeeperでLeaderに接続した時にのみ出力される項目があるようであるので確認する。

Standalone:

$ echo mntr | nc localhost 2181
zk_version      3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency  0
zk_max_latency  41
zk_min_latency  0
zk_packets_received     13484768
zk_packets_sent 13485026
zk_num_alive_connections        6
zk_outstanding_requests 0
zk_server_state standalone
zk_znode_count  60
zk_watch_count  4
zk_ephemerals_count     2
zk_approximate_data_size        13453
zk_open_file_descriptor_count   37
zk_max_file_descriptor_count    4096
$

Follower:

$ echo mntr | nc localhost 2181
zk_version      3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency  0
zk_max_latency  6843
zk_min_latency  0
zk_packets_received     5556397
zk_packets_sent 5535538
zk_num_alive_connections        16
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count  142
zk_watch_count  6
zk_ephemerals_count     26
zk_approximate_data_size        249939
zk_open_file_descriptor_count   43
zk_max_file_descriptor_count    32768
$

Leader:

$ echo mntr | nc localhost 2181
zk_version      3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency  0
zk_max_latency  899
zk_min_latency  0
zk_packets_received     18389509
zk_packets_sent 18368737
zk_num_alive_connections        25
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count  142
zk_watch_count  31
zk_ephemerals_count     26
zk_approximate_data_size        250020
zk_open_file_descriptor_count   54
zk_max_file_descriptor_count    32768
zk_followers    2
zk_synced_followers     2
zk_pending_syncs        0
$

なるほど。確かに下記3つの項目がLeaderにのみ出力されている。

  • zk_followers
  • zk_synced_followers
  • zk_pending_syncs

今回接続した先は、3台でアンサンブルを構築しているので、正常に同期が取れているFollowerが2台ある、ということである。

また、下記2項目についてはUnix系のOSでしか取得できないとのことだ。

  • zk_open_file_descriptor_count
  • zk_max_file_descriptor_count

手元にWindows系で動かしているZooKeeperが無いので確認はできないが。

以上。

■ 関連