sinoue

ECMAScriptの好きな構文を書いてみた

こんにちはリンクバル井上です。

今回はEcmaScriptで好きな構文を紹介していきたいと思います。

 

そもそもECMAScriptとは…

Ecma Internationalによって標準化されてるJavaScriptの仕様のこと

 

話よりは見て動かした方が素晴らしさがわかりそうなので早速紹介していきます!

変数を文字列へ埋め込む

[bash] var name = ‘井上’;

var str = `私の名前は${name}です`; //私の名前は井上です

function showUsers(…users) {

console.log(users);

}

showUsers(‘佐藤’, ‘鈴木’,’井上’); //[‘佐藤’, ‘鈴木’,’井上’] [/bash]

アロー関数

[bash]

var name = (text) => {

console.log(name);

};

// 引数が一つなら()も省略できる

var name = text => {

console.log(text);

};

[/bash]

includes()

[bash] ["佐藤", "伊藤", "井上"].includes(‘井上’); // true
["佐藤", "伊藤", "井上"].includes(‘鈴木’); // false
[/bash]

 

オブジェクト内の関数を簡略化

[bash]

var obj = {

name: "inoue",

show() {

return "Hello!" + this.name;

}

};
console.log(obj.show());

[/bash]

素晴らしいけどサポートされていないES6を使いたい方は・・・

続きを読む

Amazon Elasticsearch Service で利用可能になったElasticSearch5.1の良いところとは?

こんにちはリンクバルの井上です

今年の1月にAmazon Elasticsearch Service でElasticSearch5が利用可能になりました。

今回はElasticSearch5の個人的にいいな思うところ簡単に書いてみました

インデキシングパフォーマンス

5.0.0では数値データ構造の改善を始め様々な改善によりインデキシングのスループットが劇的に向上されケースによってはインデキシングのスループットは80%の向上を見込めるようです・・これだけでもすごい

続きを読む

LogStashでElasticSearchにlogを送る

リンクバルの井上です。
ElastcSearch, Kibana, Logstashの使用例の定番といえばアクセスログなどのログ収集と可視化かと思います。
今回はログ収集からKibanaでの可視化までの簡単なsampleをご紹介します。

 

Logstashのインストール

今回はbrewでinstallしてみたいと思います

brew install logstash

log収集のためのconfファイルの作成

今回は簡単な設定ファイルを作成します

この設定ファイルを使用してlogをelasticsearchへ送信します。

 

設定ファイルの解説

input

読み込むファイルを指定する今回は標準入力の設定です

[bash] input  {
stdin { }
}
[/bash]

下記のように直接ファイルを指定することも可能

[bash] input  {
file { path="/var/log/apache2/access.log" }
}
[/bash]

filter

logファイルから取得したログをelasticsearchように整形する

[bash] filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] locale => "en"
}
mutate {
replace => { "type" => "apache_access" }
}
}
[/bash]

output

ログの送信先を設定今回はローカルのElasticsearchを指定している

[bash] output {
#stdout { codec => rubydebug }
elasticsearch { hosts => ‘127.0.0.1:9200’ }
}
[/bash]

logをElasticSearchへ送信

下記のようにファイルを指定してコマンドを実行してみます

/usr/local/bin/logstash -f logstash.conf < -f   logファイルのpath

kibanaでの確認

kibanaを開くと下記のように画面が表示されてますが緑色のCreateボタンを押下します

すると下記のような画面になるかと思いますので次にDiscoverを押下します

logstashから送信されたデータが確認できました。

 

いかがでしたでしょうか?意外と簡単にログ送信できるイメージできたでのではないでしょうか

リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。

JMeterによるもっとも簡単な負荷テスト方法

リンクバルの井上です。
今回はJMeterで誰でもできるもっとも簡単な負荷テストをやってみます

JMeterの起動

まずJMeterを起動してみますすると下記のような画面が表示されるかと思います

テストは基本的にはこのテスト計画に対して作成していきます。

 

スレッドグループ設定

まずテスト計画を選択した状態で「編集」を押下し「追加」の「Threads」と見て行くと下記のようにスレッドグループが表示されますのでスレッドグループを選択しましょう

 

スレッドグループを追加すると下記のような画面が表示されます

ここではどのくらいの負荷をかけるか設定をします。

例えば「10のスレッドを20秒の時間をかけて処理開始し、スレッド毎にシナリオを1回だけ実行する」だと下記のようになるのでこの辺をいじれば基本的な負荷は大丈夫です

スレッド数: 10
Ramp-Up期間(秒): 20
ループ回数: 1 (無限ループのチェックボックスはオフにしてください)

 

GETリクエストの設定

次にスレッドグループを選択した状態で「編集」から「追加」、「サンプラー」と見て行くと下記のようにHTTPリクエストが表示されるので追加します。

 

追加したHTTPリクエストに下記のように今回は自分のローカルアプリケーションの設定をしていきます

今回は単純なページアクセスの負荷をかけるのでサーバ名、メソッド、パスのみ設定します

 

 

試験結果の表示

そして負荷をかけたら当然結果を見たいかと思いますので結果表示の設定をします。

また同じ手順でスレッドグループを選択した状態で「追加」、「リスナー」と見ていくと下記のように表示されるので「結果を表で表示」を追加します

 

 

さてようやく準備が整ったので負荷試験を実行します

実行する際は上のメニューにあるので緑の再生ボタンのようなボタンを押下すると実行されます。

すると結果は「結果を表で表示」で以下のように表示されるかと思います。

いかがでしたでしょうか?簡単な負荷試験ならこんなに簡単にテストが作れるんです!

リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。

ElasticSearchでログ収集する〜Logstashとは何だろう?

リンクバルの井上です。
今回はElasticSearchにデータを取り込むLogstashとは何かについて調べた内容をまとめてみました

###Elasticsearchとは?
Elastic社提供のLuceneベースのマルチテナント・スキーマレスで
クラウドに最適化されたサーチエンジンサーバー

###Logstashとは?
Elastic社が提供するオープンソースログ収集管理ツールです。
プラグイン形式で機能を拡張できるのが特徴でプラグインにより様々なファイルデータを収集できます。

###プラグインの種類
(沢山ありすぎるので一部紹介します・・・)

####logstash-input-jdbc
JDBCプラグインを使用してデータをDBにからデータを取得します。

####logstash-input-file
任意のファイルの内容を永続的に読み取ります。ファイル読み取り開始位置や読み取る間隔も調整することができます。

####logstash-filter-csv
カンマ区切りの入力をフィールド単位に分割します。separatorも指定することが可能です

####logstash-filter-date
日付フォーマットを変換します。

####logstash-output-jdbc
JDBCプラグインを使用してデータをDBにアウトプットします。

これらのプラグインを使い下記のような流れでデータを収集します。
1.Input ログを記録するイベントを監視
2.Codec Inputから受け取ったデータを指定した形式に整形
3.Filter Codecから受け取ったデータをフィルタ処理(解析)
4.Output Filterから受け取ったデータを出力対象に出力

基本的なLogstashの内容は以上です。
pluginをより活用すれば大抵のデータは取り込めるのであらゆるデータ収集ができそうですね!

リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。

Elasticsearchで簡単な検索をしてみる

リンクバルの井上です。
システムのデータの規模が大きくなるにつれて必ず問題になるのが検索パフォーマンスかと思います。
今回はその改善で利用されるLuceneベースの全文検索・解析ができるElasticsearchで簡単なユーザ検索をしてみます

##ElasticSearchとは?
Elastic社提供のLuceneベースのマルチテナント・スキーマレスで
クラウドに最適化されたサーチエンジンサーバー

##ElasticSearchの導入メリット
・全文検索が高速
・導入しやすい
・プラグインが豊富
・RESTfulAPI
・データの可視化が簡単(Kibanaの導入)

##ElasticSearchを入れる

###Javaのinstall

[code lang=text] brew install java
[/code]

###ElasticsSearchのinstall
今回は最新の5.0ではなく2系を使います
brew install homebrew/versions/elasticsearch24

###kibanaのinstall
ElasticSearchにversionを合わせないとエラー起こるのversion指定してinstall

[code lang=text] brew install homebrew/versions/kibana44
[/code]

###kibanaのplugin Senseをinstall

[code lang=text] /usr/local/opt/kibana44/bin/kibana plugin –install elastic/sense
[/code]

###Elasticsearchの起動

[code lang=text] /usr/local/bin/elasticsearch
[/code]

port 9200で起動されるので下記でアクセスできます
http://localhost:9200

###kibanaの起動

[code lang=text] /usr/local/bin/kibana
[/code]

こちらはport5602で起動します
http://localhost:5601

##検索機能を使う

###indexの作成
kibanaのSenseでsample_indexという名のindexを作成します。
““POST sample_index
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-29-12-06-07

###mappingの作成

[code lang=text] PUT http://localhost:9200/sample_index/_mapping/user
{
"user" : {
"properties" : {
"name" : {"type" : "string" },
"message" : {"type" : "string"}
}
}
}
[/code]

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-25-15-43-54

####データの登録
““POST http://localhost:9200/sample_index/user
{
“name”: “user”,
“message”: “user_message”

}
““
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-25-15-43-54

####検索してみる

[code lang=text] GET http://localhost:9200/sample_index/_search?pretty=true
{
"query" : {
"simple_query_string": {
"fields": ["name"],
"query": "test1"
}
}
}
[/code]

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-25-15-57-16

ユーザの検索ができました!
次回はkuromojiを使った日本語全文検索をやりたいと思います
リンクバルではエンジニアを積極募集中です。興味のある方は、こちらまでご応募ください。もちろん、社内の人間と面識があるのでしたら、直接にご連絡いただいてもかまいません。