Solrのprometheus-exporterにメトリクスを追加する

はじめに

prometheus-exporter に付属の設定ファイル(contrib/prometheus-exporter/conf/solr-exporter-config.xml)には様々なメトリクスの設定例が記載されており、これとGrafanaを組み合わせれば、かなり便利なダッシュボードが作れます。

この記事では、デフォルトの設定に無いメトリクスを自分で追加する場合の設定方法を試してみました。

solr-exporter-config.xmlの内容

SolrのどのAPIを使うかに応じて4つのセクションが用意されています。

  • <ping> PingRequestHandler へのリクエストを利用します
  • <metrics> Metrics APIを利用します
  • <collections> Collections APIを利用します
  • <search> 検索リクエストを利用します

たとえば <ping> セクションは以下のように定義されています。

    <ping>
      <lst name="request">
        <lst name="query">
          <str name="path">/admin/ping/</str>
        </lst>
        <arr name="jsonQueries">
          <str>                                                                                                         
            . as $object | $object |                                                                                    
            (if $object.status == "OK" then 1.0 else 0.0 end) as $value |                                               
            {                                                                                                           
              name         : "solr_ping",                                                                               
              type         : "GAUGE",                                                                                   
              help         : "See following URL: https://lucene.apache.org/solr/guide/ping.html",                       
              label_names  : [],                                                                                        
              label_values : [],                                                                                        
              value        : $value                                                                                     
            }                                                                                                           
          </str>
        </arr>
      </lst>
    </ping>

name=”path” でリクエスト先のパスを指定しています。

ping リクエストの応答をどのように加工するのかを指定しているのが、name=”jsonQueries” の下の str タグに囲まれた領域です。jq クエリが使われているので jq コマンドで動作確認できます。

$ curl --user solr:SolrRocks -s 'http://localhost:8983/solr/test_shard1_replica_n1/admin/ping/' |jq '            . as $object | $object |
>             (if $object.status == "OK" then 1.0 else 0.0 end) as $value |
>             {
>               name         : "solr_ping",
>               type         : "GAUGE",
>               help         : "See following URL: https://lucene.apache.org/solr/guide/ping.html",
>               label_names  : [],
>               label_values : [],
>               value        : $value
>             }
> '
{
  "name": "solr_ping",
  "type": "GAUGE",
  "help": "See following URL: https://lucene.apache.org/solr/guide/ping.html",
  "label_names": [],
  "label_values": [],
  "value": 1
}

searchメトリクスを追加してみる

単純な例ですが、全件検索(‘*:*’による検索)のヒット件数をグラフにしてみます。

solr-exporter-config2.xml に以下を追加します。

    <search>
      <lst name="request">
        <lst name="query">
          <str name="collection">wikipedia</str>
          <str name="path">/select</str>
          <lst name="params">
            <str name="q">*:*</str>
            <str name="start">0</str>
            <str name="rows">0</str>
          </lst>
        </lst>
        <arr name="jsonQueries">
          <str>
            .response.numFound as $value |
            {
              name         : "solr_num_wikipedia_entry",
              type         : "GAUGE",
              help         : "number of wikipedia entry",
              label_names  : [],
              label_values : [],
              value        : $value
            }
          </str>
        </arr>
      </lst>
    </search>

ここで指定した内容は、実際には以下のような検索リクエストになります。

$ curl --user solr:SolrRocks -s 'http://localhost:8983/solr/wikipedia/select?q=*:*&start=0&rows=0'
{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "start":"0",
      "rows":"0"}},
  "response":{"numFound":2264810,"start":0,"numFoundExact":true,"docs":[]
  }}

jq クエリによる加工結果は以下の通りです。

$ curl --user solr:SolrRocks -s 'http://localhost:8983/solr/wikipedia/select?q=*:*&start=0&rows=0' |jq '.response.numFound as $value |
>             {
>               name         : "solr_num_wikipedia_entry",
>               type         : "GAUGE",
>               help         : "number of wikipedia entry",
>               label_names  : [],
>               label_values : [],
>               value        : $value
>             }
> '
{
  "name": "solr_num_wikipedia_entry",
  "type": "GAUGE",
  "help": "number of wikipedia entry",
  "label_names": [],
  "label_values": [],
  "value": 2264810
}

prometheus-exporter によって以下のような Prometheus フォーマットに変換されます。

$ curl -s http://localhost:9854/|grep solr_num_wikipedia_entry
# HELP solr_num_wikipedia_entry number of wikipedia entry
# TYPE solr_num_wikipedia_entry gauge
solr_num_wikipedia_entry{zk_host="localhost:9983",} 2264810.0

ここまで来れば、グラフ化するのは簡単です。下の画像は、データインポートハンドラでWikipediaの日本語全記事を投入したときの、記事数の変化をグラフ化したものです。

Macでスタイル(書式)なしペーストを簡単に実行したい

こんにちわ。
リエです。

PCでお仕事しているとショートカットキーをよく使います。
その中でも軍を抜いて使うのが「command + C(コピー)」と「command + V(ペースト)」です。


スタイル(書式)*以下スタイル なしでペーストしてほしいのですが、Macで「command + V」ペーストをすると、コピー元のスタイルを引き継いでしまうことがあります。

これが非常に嫌なのです!!!
なんでスタイルなしでペーストしてくれないのかといつも思っていました。

もちろんスタイルなしでペーストする方法はあります。
それは「ペーストしてスタイルを合わせる」を実行するのですが、ショートカットキーが「command + shift + option + V」とかなり多い。指つるわ。

もっと簡単な方法はないかなとググると素敵な記事発見。
素敵記事:https://decoy284.net/mac-command-v-paste-and-match-style/#:~:text=%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A%E3%82%92%E9%96%8B%E3%81%8D,%E3%81%A7%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

設定方法は以下です。
※私はめんどくさがりなので、画像無しでの説明です。
素敵記事は画像ありで説明してくださっているので、画像ありで設定方法を見たい方はそちらをご参照ください。
1.システム環境設定を開き、キーボードを選択。
2.ショートカットタブのアプリケーションに移動し、「+」をクリック。
3.メニュータイトルに「ペーストしてスタイルを合わせる」を入力、キーボードショートカットで「command + V」を押し、追加をクリック。


たったの3ステップで完了です。
これでスタイルなしでペーストしてくれるようになり、小さなストレスが無くなりました。

記事作成者さんありがとうございました👏

iPad版Adobe Illustrator使ってみた

こんにちは、デザイナーのはなです。

大学入学の際に買った私用PCがもうだいぶ古くなって来ており、いつ突然死してもおかしくないなと怯えています。

ですが、現在趣味のイラスト制作はほぼすべてiPad版CLIP STUDIO PAINTを使っており、まれにロゴなどが必要になったときにイラレで制作する用途ぐらいにしか私用PCは使っていません。

正直ヘビーに使っているのはiPadだし、新しいPCを買うお金があるならiPadProの12インチのやつがほしいけど、PCが完全に死んでイラレが使えなくなるのも困る…

そんな葛藤をしていた折、そのうち出るらしいとうわさに聞いていたiPad版Illustratorがリリースされたので、試しに使ってみました。

タッチショートカット機能

起動して、最初になんだこれは?と思ったのが、左側に置かれている白い丸です。

これはタッチショートカットという名前だそうです。

特に説明や詳しいチュートリアルはありません。Adobeって感じですね。

さわってみると割とすぐに気が付きますが、この白い丸は、だいたいshiftキーとcommandキーの役割を持っています。

わかりやすい例を出すと、四角形を描画する際、長方形ツールを使うと縦横比自由な長方形が作成できますが、この白い丸を押しながら長方形ツールを使うと、はじめから縦横比が固定された正方形を作ることができます。

一回押すとshiftキー、押した状態で丸の外側に指を若干スライドさせるとcommandキーのような働きをするようです。

(どのツールでどんな働きをするかは、アプロケーション設定の「タッチショートカット機能をすべて表示」で確認できます)

PC版Illustratorを使ったことのある人なら、どのツールでどういう風にタッチショートカットを使えばいいかはすぐ理解出来ると思いました。

ただ、Illustratorを全く使ったことのない人だと、そもそもこの白い丸が何のために存在しているのか理解するのが慣れるまで少し大変そうだなと感じました。

また、この丸は好きな場所に移動させることができます。

私は左利きなので、空いた右手でこの機能を使うため、右側に設置しています。

下の方に置いたり上の方に置いたり、自分の使いやすい場所にこのボタンを設置できるのはかなり便利だなと思いました。

また、UNDO機能は二本指で画面タップ、REDO機能は三本指で画面をタップすると使用できました。

こちらも特に説明はありませんでしたが、CLIP STUDIO PAINTと同じだったのですぐ使うことができました。

タッチショートカット機能があれば左手デバイスなしでも十分使いやすいと感じました。

ツール

細かいですが何気に感動したのが、重ね順入れ替え機能です。

画面の狭さ的にレイヤーを常に表示させて置くのが難しいため、重ね順をレイヤーの方で気軽に入れ替えるのが難しいのですが、レイヤーを表示させずともかんたんに重ね順を入れ替える事ができます。

このバー上の丸を左端に一回動かすと、重ね順が一つ下がり、右端に動かすと一つ上がります。

(よく考えるとここのUIバー状にする必要あったのか…?とも思わないでもないですが…)

また、ロックや線幅変更、オブジェクト複製も各オブジェクトを選択してアイコンをタップするだけで簡単に使用できます。

私はPC版Illustratorでも最低限のもの以外はショートカットがなかなか覚えられず、特に重ね順変更などは毎回このへんだったかな?と勘でショートカットを押して最終的にレイヤーの方で動かしているので、アイコンを覚えたら使えるこちらのほうが使いやすくて助かります…

ブラシ機能

マウスで頑張って描くかペンタブを繋がないとほぼ使えなかったブラシ機能ですが、ApplePencilで直接描画できることにより、大幅に使いやすくなっています。

このようにクマの半分ぐらいを塗って一旦ペンを離しても…

続きを塗ると一つのオブジェクトになります。

これにより、かなり直感的に色面を作成することができるなと感じました。

総合的な所感

大体10分ぐらいで描いた絵

・PC版Illustratorよりも、お絵かきソフトとして直感的につかいやすくなっていると感じた

・左手デバイスはなくても全然使えそう

・ショートカット覚えられない人間はだいぶ助かる

・Illustrator初心者ならもしかしたらiPad版から入ったほうが早く使いこなせるようになるかもしれない

・スポイトツール押したときにアイコンの方も変化あってほしいなとか、画面右上のツールも設定で左側に移動させられたらいいのにとか細かい不便さはちょいちょいあるものの、致命的に不便なところは特に無いように感じた

正直iPad版Illustratorにはあまり期待していなかったのですが、私の期待度を大幅に超えて、なんならPC版より好きまであるなと思えるほどでした。

しばらく新しいPCは買わなくてよさそうです…

俺のスナワチ

も〜い〜くつね〜る〜と〜お正月♪
あと61日で年が明けます。マエダです。

いきなりですが、カウボーイはまだいるの?
答えはYes。

先日、知人からのご紹介で一夏の間カウボーイをされていた前田将多さんとお会いさせていただきました。
現在は大阪で「スナワチ」というレザー専門ショップを経営されています。
https://sunawachi.com/

snawachi
※ スナワチにて

前田さんについては、ぜひ「旅と思索社」様より出版されている「カウボーイ・サマー」をチェックしてみてください。

スナワチ店舗一角ではレザークラフツマンであられる後藤優太さんが日々良質なレザー製品を生み出しております。
その日僕は、後藤名人の新作コンパクト財布を購入させていただきました。

こちらの写真は大阪の高島屋さんでのOUGI Leathersさんの催事出店での様子。

催事出店に向けて製作されていましたが、伺わせていただいた日がなんと完成翌日だったこともあり初号機となる上記ツイートのお財布をゲットさせていただきました。

※ 催事会場にてその場で作っていただいたキーケースも一緒に。

本日2020年11月1日が天赦日ということで、出会ってから一ヶ月弱経ちましたがこちらのお財布を稼働開始いたします。
OUGI Leathersのロゴマークのように「末広がりに末永く」このお財布とお付き合いさせていただければと思います。

お気に入りのレザーとの出会いにスナワチさんまで足を運んでみてはいかがでしょうか。
ワンコのジョージくんもあたたかく出迎えてくれますよ😊


スナワチ WebSite Twitter
前田将多さん Twitter
OUGI Leathers WebSite Twitter
後藤優太さん Twitter

コロナ禍で体調崩すと思ったより大変だよ

「スプラウトの半分はやさしさでできている。」ってよ。
マエダです。

私、数ヶ月前に、数日間発熱をしました。
コロナ禍での発熱だったため家庭内で隔離し外出をせず安静にしてました。
インフルエンザのときもそうですが隔離生活は食事・トイレ・お風呂が大変です。

 

世がこんな状況なため、自分が新型コロナウイルス感染したのかどうかが不安すぎてどうすればいいかわからず知人に相談したところ保健所に相談すればよいと教えてもらい相談しました。

熱で意識が朦朧としていたためか全然住んでいないところの保健所に電話したり、症状を正確に伝えるのに時間がかかったりとで大変でしたがPCR検査を受けさせていただけることに。

そして案内された日時にいざPCR検査に出発。
車は運転できる程度に回復していたため車で登院しました。

病院の駐車場入り口へ着くやいなや、「窓をあけて」と警備の方に指示されました。
事前に病院の方からは車の窓は開けないようにと案内されていたため戸惑いつつ警備の方にそれを伝えるとなんとか駐車スペースへイン。
車の窓を開けずにコミュニケーションを取るのはなかなか大変でした。

看護師さんに駐車スペースまで来ていただき、いよいよPCR検査へ。
僕が実施してもらったのは唾液採取による検査でした。

どんな検査方法か全く情報ない状態で向かったため、「レモンや梅干しを急に思い出しながらと言われても」と思いつつ、唾液採取を実施。
量足りないと指摘いただきつつなんとか検査量を提出して最後はお医者さんに問診していただき帰宅。

翌日に検査結果を電話で教えていただきました。
結果、「陰性」

ものすごくホッとしました。
家族にも迷惑をかけてしまいましたし、保健所や医療従事者の方には改めて感謝をお伝えさせていただきます。

ありがとうございました。

新型コロナウイルス感染拡大防止に努めることはもちろん、改めて風邪を含めた自身の体調をしっかりしないといけないなと反省しました。。。