If today were the last day of my life

駆け出しエンジニアの備忘録

dockerで立ち上げているSolr の JMX 機能を有効にしてモニタリングする

Solr備忘録シリーズ #2

Solrのモニタリングについては以下のQiitaが素晴らしいです。

Solr のモニタリングに使えるソフトウェア

上記でも触れられていますが、
jconsoleによるモニタリングは簡単なグラフだけですが、すぐ使えます。

まず、18983ポートを使うので docker-compose.yml にポートマッピングを追加します。

     - "18983:18983"

そして、JMXを有効にするため、以下を environmentに追加します。

- "ENABLE_REMOTE_JMX_OPTS=true"

こんな感じになりました。

  solr:
    image: solr
    ports:
     - "8983:8983"
     - "18983:18983"
    volumes:
     - ./solr/data:/opt/solr/server/solr/mycores
    restart: always
    environment:
     - "SOLR_JAVA_MEM=-Xms1024m -Xmx1024m"
     - "ENABLE_REMOTE_JMX_OPTS=true"

コンテナを立ち上げ直すと、JVMのArgsに関連する値が表示されるようになります。

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=18983
-Dcom.sun.management.jmxremote.rmi.port=18983
-Dcom.sun.management.jmxremote.ssl=false

こんな感じ。

f:id:suzusin:20180606001942p:plain

続いて、ローカル端末にjdkをインストールします。 今回は最新の1.8を入れました。

$ java -version
java version "1.8.0_101"

ただ jconsole と打ってENTERで立ち上げます。

szk416s-MacBook-Pro:~ szk416 $ jconsole

Remote Processで localhostの18983ポートに接続します。

f:id:suzusin:20180606002448p:plain

警告が出ますが、まぁここでは Insecureで繋げにいきます。 f:id:suzusin:20180606235533p:plain

しかし、 localhost:18983 (disconnected) と言われてしまいました。 再接続を聞かれますが、リトライしても変わりません。

The connection to localhost:18983 did not secceed. Would you like to try again?

f:id:suzusin:20180606235942p:plain

どうやらhostのIPをセットする必要があるようです。

参考: あるホストのみjmx監視ができない | 日本Zabbixユーザー会

試しにローカル端末でIPを確認して、とりあえずハードコードですがセットしてみます。

szk416s-MacBook-Pro:~ szk416 $ ipconfig getifaddr en0
192.168.0.11
  solr:
    image: solr
    ports:
     - "8983:8983"
     - "18983:18983"
    volumes:
     - ./solr/data:/opt/solr/server/solr/mycores
    restart: always
    environment:
     - "SOLR_JAVA_MEM=-Xms1024m -Xmx1024m"
     - "ENABLE_REMOTE_JMX_OPTS=true"
    command: "-Djava.rmi.server.hostname=192.168.0.11"

コンテナを立ち上げ直し、再接続します。

すると…

f:id:suzusin:20180607000920p:plain

接続に成功!

これでモニタリングができるようになりました。

docker-compose.yml で Solr の JVM-Memory を変更する

最近よくSolrを触るので備忘録です。

とりあえずSolrを使うだけなら、docker-compose.ymlに以下のように書いてupすれば、imageが無ければ持ってきてくれて、立ち上がるかと思います。

  solr:
    image: solr
    ports:
     - "8983:8983"
    volumes:
     - ./solr/data:/opt/solr/server/solr/mycores
    restart: always

upしたらlocalhost:8983にアクセスすれば、すぐに管理画面を確認できます。

f:id:suzusin:20180605001534p:plain

このとき画面の右下に出ているJVM-Memory はdefaultの512MBです。

コンテナに入って /opt/solr/bin/solr.in.sh を見ると、以下の設定がコメントアウトされていました。

 #SOLR_JAVA_MEM="-Xms512m -Xmx512m"

おそらくここでも変更できるのだと思いますが、ymlからの方が簡単です。

environmentに追加します。ここでは1024MBにしてみます。

  solr:
    image: solr
    ports:
     - "8983:8983"
    volumes:
     - ./solr/data:/opt/solr/server/solr/mycores
    restart: always
    environment:
     - "SOLR_JAVA_MEM=-Xms1024m -Xmx1024m"

コンテナを立ち上げ直すと、ちゃんと変更されていることが確認できました。

f:id:suzusin:20180606000431p:plain

PHPerKaigi 2018に参加してきた

blogめちゃサボってたんですが、来年以降の開催のためにシェアーして!という話もあり、良い機会なので!

タイトルどおり、ことしから始まったPHPerKaigi 2018に参加してきました。

f:id:suzusin:20180311125150j:plain

確か昨年10月のPHP勉強会に参加したときに開催の話を聞いて、スポンサー募集と併せて社内で話はしたものの当時は時期も悪く。 その後、時は流れて@m_norii さんが話を通してくれたので、自分も気になって参加してきました。

感想としては、やはり界隈のトップを走っている方たちは凄い。 知識、トーク力、掛け合い? ノリと勢い…お祭り感も。 前職では.NET界隈でしたが、結構カルチャーの違いを感じました。

あとはセッションの難易度も結構感じられて、 移民の駆け出しPHPer的には、「なるほど!」だったり「なるほど、わからん」だったり。 MSのイベントとかだとセッションレベルが設けられていますが、将来的にはそうなってくれると嬉しいかなーとか。 もちろん本当は全部予習して臨むのが望ましいんですが。

そんな理由もあって、ベストトークは @hidenorigoto さんの『SOLIDの原則って、どんなふうに使うの?』に投票しました。 他の方もとてもレベルが高かったですが、納得のベストトーク賞だと思いました!

スライドリンク、ありがとうございます。 www.manasnote.com

f:id:suzusin:20180311125153j:plain もはやビール祭りでしたが、ちょうど薬を飲んでてノンアルDayだったので、CAさんの無限コーヒーが有難かった!

f:id:suzusin:20180311125139j:plain Job Board、なぜ弊社はないのか。

phpカンファレンス2017に参加してきた

f:id:suzusin:20171008173133j:plain

初参加でした。 小並感の走り書きです。

セッションについて

  1. ネームバリューは気にしない。知らない会社さんでも良いセッションはたくさんある
  2. スポンサーセッションは宣伝・紹介的な内容が入るので、自社と事業内容が被らないと得るものが少ない
  3. デモセッションは扱う技術の素人が行くと置いてけぼりのリスクがある
  4. それでも大体の資料は後から公開されるので、デモセッションに行くべきか
  5. 知らないツールや技術でも事前に概要抑えてからいくと聞いてる時に余裕が出来て良い

その他

  • プランニングポーカーもらったの地味に嬉しい
  • 全スライド撮影ニキやキーボード強打ネキが近くにいるときは席移動したくなった

Redmine SlackをインストールしたらRedmineが起動しなくなった話

タスク管理をどうするかというのは、SIerでも常日頃から課題です。
人に任せると基本的にExcelになってしまうので、自分がリーダーになってからはツールを導入しています。
自社サービスであればVisual Studio Team Servicesも良いのですが、新しいものは教えるコストも掛かるので、 ギリギリみんなが知っているRedmineを使うことにしました。

弊社グループの場合、自社クラウドでインスタンスを立ち上げるまでに 最短5営業日かかるので、多少のコストが掛かっても、メリットがあればAzureやAWSを使うことにしています。

EC2のBitnamiテンプレートを選択して、ポチポチしているだけであっという間に環境ができました。

そこまでは良かったのですが、 タイトルのとおり、プラグインを入れて再起動したところ、エラーが出るようになりました。

We’re sorry, but something went wrong.
We’ve been notified about this issue and we’ll take a look at it shortly.

下記の記事を参考にさせていただいて、解決できました。
RedmineでPluginを入れるのにハマった件 - ポジローぽけっと

結論だけ書くと、以下の操作が必要でした。

Sudo gem update rake
Bundle install –no-deployment

pandas でScrapingしようとしたらエラーが出た話

環境

  • MBP Late 2016 (Touch Bar 13-inch)
  • PyCharm Community Edition
  • Python 2.7 (Default)

書いたコード

  • 適当なHTMLのtableからデータを取ってJson出力したい
import pandas

url = 'http://npb.jp/announcement/roster/roster_0605.html'
df = pandas.io.html.read_html(url)
df[3].to_json('roster_0605.json',  force_ascii=False)

とれたデータ

{
  "0": {
    "0": "千葉ロッテマリーンズ",
    "1": "東北楽天ゴールデンイーグルス"
  },
  "1": {
    "0": "投手",
    "1": "投手"
  },
  "2": {
    "0": 67,
    "1": 22
  },
  "3": {
    "0": "金森 敬之",
    "1": "戸村 健次"
  }
}

遭遇したエラー

  • そもそもライブラリが全然足りていなかったので、スクレイピング関連を一式インポートした
  • PyCharm -> File -> Default Settings -> Project Interpreter の「+」で追加
    • pandas, lxml, html5lib, beautifulsoup4, six
  • その後、以下が発生
    • ImportError: cannot import name viewkeys
    • ぐぐったら、sixが古いっぽい。更新して解決。
      1. cd /Library/Python/2.7/site-packages
      2. sudo -H pip install six==1.10.0 -t .

Powerbeats3が壊れたので交換した話

Apple Storeで購入

昨年の11月、Apple Store銀座に立ち寄る機会があったため、 万引きエクスペリエンス(セルフ・チェックアウト)で購入していました。

購入直後の写真 f:id:suzusin:20170320152114p:plain

レシートがPDFとしてメール送付されてくるので管理が楽で良いです。 それまでは市販のBluetoothイヤホン(約2,000円)を使っていましたが、

  1. 電源を入れる
  2. 「Connected」とイヤホンから聞こえる
  3. iPhoneアプリで音楽を再生する
  4. iPhoneのスピーカーからそのまま音楽が流れてくる

というコントのような出来事が度々起きていたため、 電源を入れてちゃんと接続されてくれるPowerbeats3は重宝していました。

突然の故障

購入から3ヶ月経った2月某日。 ハーフマラソン中に突然電源が落ちました。 もちろんフル充電してから家を出ており、また2,3時間しか経過していないため、 バッテリー切れではないことはすぐにわかりました。

修理の依頼と交換まで

Apple Storeに行ったところ、 「StoreからBeatsの修理センターに送るよりも、お客さんが直接送った方がいいっすよ」とのこと。 Apple サポート

Apple サポートへのお問い合わせ - Apple サポート

電話をして事情を説明、集荷の依頼となりました。

日曜の昼間に電話しましたが、それほど待たされることもなく、 また手元にシリアルナンバー(購入時の箱の底のシールに記載)とレシートがあったため、スムースに進めることができました。 ただし、交換となった場合の注意点として、色は選択できないというのはちょっと気になりました。 Beatsはカラーバリエーションが豊富なので、特定の色が好きで購入する人もいると思います。 僕は特にこだわりが無かったので了承しましたが、黒以外似合わないような人に赤が届くこともあると思うと微妙です。

集荷、発送、完了までは各1日ほど

f:id:suzusin:20170320154438p:plain

f:id:suzusin:20170320154431p:plain