CircleCIでElasticsearchのログが吐かれていない問題を修正する

井原(@ihara2525)です。

(めちゃ小ネタです)

CircleCI上でelasticsearch-extensionsを使ってテストを動かすのように引き続きテストを行っているのですが、elasticsearch-railsが0.1.8になった頃?から、テストは通るものの以下のようなエラーが出るようになっていました。

...
Starting 1 Elasticsearch nodes...log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: /var/log/elasticsearch/elasticsearch-test-box500.log (Permission denied)
...
java.io.FileNotFoundException: /var/log/elasticsearch/elasticsearch-test-box500_index_indexing_slowlog.log (Permission denied)
...
java.io.FileNotFoundException: /var/log/elasticsearch/elasticsearch-test-box500_index_search_slowlog.log (Permission denied)
...

気持ちは悪いしログも書かれていない、ということで修正しようと試行錯誤してみました。

どうもインスタンスが立ち上がった時点で以下のディレクトリができている模様。

ubuntu@box844:~$ ls -lF /var/log
drwxr-xr-x 1 elasticsearch elasticsearch     190 Oct 16 05:52 elasticsearch/

多分これがelasticsearchグループ/ユーザ、755なので、テストを動かしているubuntuユーザが書き込めず上記のエラーになっているぽいです。

というわけで、circle.ymlに以下を追加、/var/log/elasticsearchディレクトリがある場合は777にしてあげます。

dependencies:
  pre:
    - >
      if [ -d /var/log/elasticsearch ] ; then
        sudo chmod 777 /var/log/elasticsearch
      fi

これで無事ログが吐かれるようになりました!

ubuntu@box844:~$ ls -lF /var/log/elasticsearch
-rw-r--r-- 1 elasticsearch elasticsearch     0 Oct 16 05:52 elasticsearch_index_indexing_slowlog.log
-rw-r--r-- 1 elasticsearch elasticsearch     0 Oct 16 05:52 elasticsearch_index_search_slowlog.log
-rw-r--r-- 1 elasticsearch elasticsearch   215 Oct 16 05:52 elasticsearch.log
-rw-rw-r-- 1 ubuntu        ubuntu            0 Oct 28 10:41 elasticsearch-test-box844_index_indexing_slowlog.log
-rw-rw-r-- 1 ubuntu        ubuntu            0 Oct 28 10:41 elasticsearch-test-box844_index_search_slowlog.log
-rw-rw-r-- 1 ubuntu        ubuntu        83443 Oct 28 10:41 elasticsearch-test-box844.log

といってもこのログを参照することがほぼないのですが(泣)、気持ち悪さは解消しました!