Hatena::ブログ(Diary)

Solr, Python, MacBook Air in Shinagawa Seaside RSSフィード

2016-10-30

[] インストール メモ

Fluentdサーバクライアント間の通信TCPUDPの両方を使う

セキュリティグループの設定では忘れないように!

ログは /var/log/td-agent/td-agent.log に出る


1) Fluentd クライアント

# curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sudo sh
# sudo chkconfig --add td-agent

# vi /etc/init.d/td-agent

# rootでの実行に変更
TD_AGENT_USER=root
TD_AGENT_GROUP=root

# vi /etc/td-agent/td-agent.conf 

<match www.apache.access>
 type forward
 <server>
  host 172.30.0.35 <- FluentdサーバのIPアドレス
  port 12345
 </server>
</match>

<source>
 type tail
 format apache2
 pos_file /var/log/td-agent/httpd-access.log.pos
 path /var/log/httpd/access_log
 tag www.apache.access
</source>

# /etc/init.d/td-agent start

2) Fluentd サーバ

# curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sudo sh
# sudo chkconfig --add td-agent
# /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-zabbix
# /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-cloudwatch

# vi /etc/init.d/td-agent

# rootでの実行に変更
TD_AGENT_USER=root
TD_AGENT_GROUP=root

# vi /etc/td-agent/td-agent.conf 

<match www.apache.access>
 type file
 path /var/log/td-agent/wwwaccess
</match>

<source>
 type forward
 port 12345
</source>

# /etc/init.d/td-agent start

3) アンインストール

# yum remove td-agent

2016-10-27

[] SMTPサーバ指定してメール送信する

メールクライアント

メールサーバのIPアドレスを登録
$ vi ~/.mailrc
set smtp=smtp://x.x.x.x:25

メールサーバ

メールクライアントのIPアドレス追加
# vi /etc/postfix/main.cf
    mydestination = $myhostname, ・・・, y.y.y.y
# service postfix reload

2016-10-18

[][] Solr6 Jythonフィードの前処理をする メモ

1. Jythonインストール

Jythonスタンドアローン版を下記からダウンロード

http://www.jython.org/downloads.html

sudo mkdir /var/solr/data/コア名/lib

sudo cp jython-standalone-2.7.0.jar /var/solr/data/コア名/lib

sudo /etc/init.d/solr restart <- Solr 再起動

2. solrconfig.xml の変更

拡張子.jyは使えない

  <initParams path="/update/**">
    <lst name="defaults">
      <!-- str name="update.chain">add-unknown-fields-to-the-schema</str -->
      <str name="update.chain">script</str>
    </lst>
  </initParams>

    <updateRequestProcessorChain name="script">
      <processor class="solr.StatelessScriptUpdateProcessorFactory">
        <str name="script">update-script.py</str>
      </processor>
      <processor class="solr.RunUpdateProcessorFactory" />
    </updateRequestProcessorChain>

3. update-script.py を書く

下の例だとSolrログファイルメッセージが出力される

デフォルトでは /var/solr/logs/solr.log

def processAdd(cmd):
  doc = cmd.solrDoc
  id = doc.getFieldValue("id")
  logger.info("update-script#processAdd: id=" + id)

def processDelete(cmd):
    logger.info("update-script#processDelete")

def processMergeIndexes(cmd):
    logger.info("update-script#processMergeIndexes")

def processCommit(cmd):
    logger.info("update-script#processCommit")

def processRollback(cmd):
    logger.info("update-script#processRollback")

def finish():
    logger.info("update-script#finish")

[][][] Amazon LinuxSolr 6.2.1 インストール

インストール

wget http://ftp.jaist.ac.jp/pub/apache/lucene/solr/6.2.1/solr-6.2.1.tgz
tar xvfz solr-6.2.1.tgz
sudo solr-6.2.1/bin/install_solr_service.sh solr-6.2.1.tgz
sudo vi /etc/default/solr.in.sh <- これやんないとエラーになった
    SOLR_JAVA_HOME="/usr" <- 追記

sudo /etc/init.d/solr start

コアの作成とサンプルデータフィード

sudo - solr <- Solr の操作は solr ユーザで行う。インストールすると自動的にできる
vi .bash_profile
    export SOLR_JAVA_HOME="/usr" <- 追記
source vi .bash_profile

/opt/solr/bin/solr create_core -c mycore <- コアの作成
/opt/solr/bin/post -c mycore /opt/solr/example/exampledocs/books.csv <- サンプルデータフィード

ブラウザから確認

http://hoge:8983/solr/#/mycore/query

2016-09-06

[][][] BASIS TECHNOLOGY の Rosette と Kuromoji で すもももももももものうち やってみた メモ

#!/usr/local/jython/bin/jython
# -*- coding: utf-8 -*-

# Kuromoji と Rosette のパース対決

# Kuromoji
from com.atilika.kuromoji.unidic import Tokenizer

# BASIS TECHNOLOGY Rosette 
from com.basistech.util import Pathnames
from com.basistech.util import LanguageCode
from com.basistech.rlp import EnvironmentParameters
from com.basistech.rlp import RLPEnvironment
from com.basistech.rlp import ContextParameters
from com.basistech.rlp import TokenIteratorResultAccess
from com.basistech.rlp import ResultAccess
from com.basistech.rlp import TokenData

from java.io import File
import sys, os

if __name__ == "__main__":
 parseWord = u"すもももももももものうち"

 # Kuromoji ↓
 tokenizer = Tokenizer()
 tokens = tokenizer.tokenize( parseWord )

 print "\nKuromoji"
 for token in tokens:
  print token.getSurface() + "\t" + token.getAllFeatures()
 # Kuromoji ↑

 # BASIS TECHNOLOGY Rosette ↓
 # パラメータ設定 #
 btRoot = "/hoge/BasisTech"
 Pathnames.setBTRootDirectory( btRoot )
 envParams = EnvironmentParameters()
 environmentPath = btRoot + "/rlp/etc/rlp-environment.xml"
 envParams.setEnvironmentDefinition( File( environmentPath ) )
 rlpEnv = RLPEnvironment( envParams )
 rlpEnv.initialize()
 contextParam = ContextParameters()
 contextPath = btRoot + "/rlp/samples/etc/rlp-bl-context.xml"
 contextParam.setContextDefinition( File(contextPath) )
 rlpContext = rlpEnv.getContext(contextParam)
 rlpContext.setProperty("com.basistech.jsonw.skip", "true")

 # 形態素解析
 rlpContext.process(parseWord, LanguageCode.UNKNOWN)

 # 形態素解析結果の取り出し
 resultAccess = ResultAccess(rlpContext)
 tokenResultAccess = TokenIteratorResultAccess( resultAccess )
 tokenData = TokenData()

 print "\nBASIS TECHNOLOGY Rosette"
 while tokenResultAccess.next(tokenData):
  print tokenData.getText() +'\t',

  if tokenData.getPartOfSpeech():
   print tokenData.getPartOfSpeech(),

  if tokenData.getLemma():
   print tokenData.getLemma(),

  print
 # BASIS TECHNOLOGY Rosette ↑




Kuromoji
すもも  名詞,普通名詞,一般,*,*,*,スモモ,李,すもも,スモモ,すもも,スモモ,和,*,*,*,*
も      助詞,係助詞,*,*,*,*,モ,も,も,モ,も,モ,和,*,*,*,*
もも    名詞,普通名詞,一般,*,*,*,モモ,桃,もも,モモ,もも,モモ,和,*,*,*,*
も      助詞,係助詞,*,*,*,*,モ,も,も,モ,も,モ,和,*,*,*,*
もも    名詞,普通名詞,一般,*,*,*,モモ,桃,もも,モモ,もも,モモ,和,*,*,*,*
の      助詞,格助詞,*,*,*,*,ノ,の,の,ノ,の,ノ,和,*,*,*,*
うち    名詞,普通名詞,副詞可能,*,*,*,ウチ,内,うち,ウチ,うち,ウチ,和,*,*,*,*

BASIS TECHNOLOGY Rosette
すもも  NC
もも    NC
もも    NC
も      PL
もの    PL
うち    V うつ

2016-08-08

[] No results found になったときにやったこと メモ

画面右上の時計アイコンから、データの日時の範囲指定を変更する

デフォルトは Last 15 minutes になっているので

15分以上前のデータしかなければ 下記メッセージが出てグラフは表示されない

No results found 
Unfortunately I could not find any results matching your search. I tried really hard. I looked all over the place and frankly, I just couldn't find anything good. Help me, help you. Here are some ideas:

Expand your time range
I see you are looking at an index with a date field. It is possible your query does not match anything in the current time range, or that there is no data at all in the currently selected time range. Click the button below to open the time picker. For future reference you can open the time picker by clicking the time picker  in the top right corner of your screen.

Refine your query
The search bar at the top uses Elasticsearch's support for Lucene Query String syntax. Let's say we're searching web server logs that have been parsed into a few fields.