あきろぐ

いろいろめもするよ🐈🐈🐈

GrafanaのVariable機能を使ってみよう【Zabbix編】

以前の記事では、Zabbixの監視画面をGrafanaで作成する方法についてを書きました。
akng-engineer.hatenablog.com

今回は、監視するサーバーや監視アイテムが増えたときに有用な機能であるVariablesについて紹介します。Variables機能を使うことでGrafanaでの監視画面の作成がかなり楽になるので、知らない方は是非使ってみてほしいです!

Variables(変数)とは

公式ドキュメントには下記のような説明がされています。

変数は値のプレースホルダである。メトリッククエリやパネルタイトルに変数を使うことができる。ダッシュボートの上部にあるドロップダウンで値を変更するとパネルのメトリッククエリに新しい値が反映される。

つまり、変数を使うことで同じような画面やパネルを手動で作る必要がなくなる便利な機能です。

GrafanaのVariables機能について詳しく知りたい方は、公式ドキュメントを参照してください。
grafana.com

環境

今回使っているバージョンは以下の通りです。

  • Zabbix4.0
  • Grafana6.16

変数を登録するよ

Grafanaにログインし対象のダッシュボードを開いたら、画面右上の「Dashboard Settings」をクリック
f:id:akngo22:20190512155620j:plain
続いてVariables⇒Add Variableをクリック
f:id:akngo22:20190512160759j:plain
変数登録に必要な事項を入力し、Addをクリック
f:id:akngo22:20190512160856j:plain
Name:変数名
Data sourse:変数に登録するデータソース(ここではZabbixの情報を使うのでZabbix)
Refresh:変数を更新した場合の反映方法(今回はダッシュボードをリロードしたときを選択)
Query:変数を登録するためのクエリはここに書く
Sort:変数のソート方法(アルファベット順とか若番か老番順かなど)
Preview of Values:変数に格納された値のプレビューが見れる

クエリはどう書くの

クエリの書き方ですが、今回は「Virtual Machines」というホストグループに属している全ホストを変数扱いにしたいので、クエリは「Virtual Machines.*」と入力しました。
Zabbixのデータは、ホストグループ⇒ホスト⇒アプリケーション⇒アイテムというデータ構成になっているので、「⇒」の部分は「.(ドット)」でつないでください。
例を挙げると、

  • 全ホストグループを指定⇒クエリ:「*」
  • あるホストグループの全ホストを指定⇒クエリ:「hostgroup_name.*」
  • あるホストグループのあるホストの全アプリケーションを指定⇒クエリ:「hostgroup_name.host_name.*」

こんな感じで変数登録することができます。

Regrex(正規表現)を使えば、ある条件にマッチするホストグループ名やホスト名を指定することもできます。
Preview of Valuesを見れば、きちんと変数に値が格納されているか登録前にわかりますよ!

パネルに変数設定をするよ

変数を登録し、ダッシュボードに戻ると画面上部にドロップダウンリストが表示されていることを確認します。
パネルに変数設定するには、パネルの編集画面を開きます。
f:id:akngo22:20190512161902j:plain
今回メトリッククエリ、タイトル名に変数を使うので、変数設定したい部分に変数名を入力しましょう。
変数名を使うときには"$変数名"と入力します。

設定が完了したら、ドロップダウンリストでサーバー名を選択します。
f:id:akngo22:20190512163720j:plain
f:id:akngo22:20190513215621j:plain
リストで選択したホストの情報がきちんと反映されているのが確認できればOKです。

まとめ

変数を使うと同じような画面を大量に作る必要もなくなるので、かなり作業が楽になると思います。
また、Zabbixのホストグループに新しくホストが追加されたとしても、自動的にGrafana側へ反映されるのでGrafanaの設定は何もしなくていいので便利ですね。さらに、変数は同じような画面を複数作らなくても良いだけではなく、同じようなパネルが必要な場合に一括で作成することもできます。それはまた別に書こうかな。

以上です。

elasticsearch+logstash+grafanaを試してみるよ1(インストール編)


今回は、twitterプラグインを用いて取得したログをLogstashで加工しElasticsearchに保存した後、Grafanaで可視化するところまでやりたいと思います。

環境

  • CentOS7.6
  • Grafana6.16
  • Elasticsearch5.6.16
  • Logstash5.6.16

インストール

Java確認&インストール

Logstashを使うにはJava8が必要なので、事前にJava8が入っているか確認します。

java -version

CentOS7はデフォルトでjava8が入っていないので、インストールします。
今回はOpenJDKのディストリビューションを使います。
※現在サポートされているのはjava8のみなので、他のバージョンが入っていた場合は、バージョン変更を実施してください。

#java8のインストール
$ sudo yum -y install java-1.8.0-openjdk
#javaのバージョン確認
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

ElasticsearchとLogstashのインストール

続いて、ElasticsearchとLogstashをインストールしていきます。
yumでインストールする場合、公開署名キーをインポートする必要があります。

$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

その後、/etc/yum.repos.d/配下にrepoファイルを新規で作成します。
repoファイル名は何でも良いらしいですが、今回はドキュメントと同様"logstash.repo"ファイルとして作成します。

$ vi /etc/repos.d/logstash.repo
[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

repoファイルを作成したら、ElasticsearchとLogstashをインストールします。

$sudo yum -y install elasticsearch
$sudo yum -y install logstash

www.elastic.co

サービスの自動起動設定

インストールが完了したら、サービスの自動起動設定を行います。
設定したらサービスのステータスが「enabled」になっていることを確認しましょう。

#サービス自動起動の設定
$ sudo systemctl enable elasticsearch
$ sudo systemctl enable logstash
#確認
$ systemctl list-unit-files  -t service
elasticsearch.service                         enabled
logstash.service                              enabled

Twitterプラグインのインストール

今回はTwitterプラグインを使ってみますが、他のプラグインを使ってみたい方はLogstashで使用できるプラグインが下記リンクに書かれているので、インプットしたいデータソースがあるか確認してください。
コマンドでもLogstashで使用できるプラグイン確認できますよ。

#プラグイン一覧
 /usr/share/logstash/bin/logstash-plugin list

www.elastic.co

プラグインのインストール方法は下記リンクを参考にしました。
少しインストールに時間がかかるので焦らず待ちましょう。
「Installation successful」が表示されて入ればOKです!

#twitterプラグインをインストール
$ /usr/share/logstash/bin/logstash-plugin install logstash-input-twitter
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Validating logstash-input-twitter
Installing logstash-input-twitter
which: no javac in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
Installation successful

www.elastic.co

今回はここまで~('ω')ノ

参考文献

今回のインストール方法等は下記の書籍を参考にしました。
Elasticのドキュメントは英語なので、少ししんどい・・・と思う方や初心者の方におすすめですよ。

Grafanaを使ってZabbixの監視画面を作成する

f:id:akngo22:20190502195824p:plain
最近業務でGrafanaを使った監視画面の作成を行っているのですが、現場で貸与されているPCがロースペックで作業する度にイラついて仕方ないので、自宅で快適に試す環境があったらいいな~と思い作ってみました。

環境

  • Vagrant2.2.3
  • CentOS7.6 (Zabbix、Grafanaを入れるVM
  • CentOS6.10 (監視対象VM
  • Grafana6.1.6
  • Zabbix4.0

手順

VagrantCentOSは既に準備済みとして進めます。

1.Zabbixサーバーの準備

Zabbixの導入手順は、下記のリンクに沿って進めていけば問題なく設定完了します。
www.zabbix.com

Zabbixで監視するサーバーにもZabbix-agentを導入するのを忘れずに行います。
今回は監視するサーバーはCentOS6なので下記手順でやりました。
qiita.com

監視可能になっているかどうかは、ZabbixサーバーのGUI画面で確認します。
Configuration⇒Hosts⇒対象ホストのAvailabilityがグリーンであればOKです。
f:id:akngo22:20190502171542j:plain

監視ホストや監視アイテムは、公式ドキュメントを見て登録しデータを取得しておきます。
www.zabbix.com

2.Grafanaインストール

こちらも公式ドキュメントを見て導入しました。
grafana.com

 CentOS7はデフォルトでwgetコマンドが入っていないので、まずコマンドをインストールしてからレポジトリ追加していきます。

#wgetあるか確認
which wget 
#wgetのインストール
yum -y install wget 
#レポジトリ追加
wget https://dl.grafana.com/oss/release/grafana-6.1.6-1.x86_64.rpm 
#grafanaインストール
sudo yum localinstall grafana-6.1.6-1.x86_64.rpm 

Grafanaのインストールが完了したらGrafanaを起動させます。

sudo service grafana-server start

続いて「http://[Grafana_server_IP_address]:3000」にアクセスしGrafanaのGUI画面にログインします。デフォルトはのログインはユーザー名・パスワードともadminで入ることができます。ログインするとパスワード変更画面が表示されるので安全なものに変更しましょう。
パスワード変更すると下記のようなホーム画面に遷移します。
f:id:akngo22:20190502174802j:plain

3.Zabbixプラグインの追加

GrafanaはデフォルトのままだとZabbixをデータソースとして使えないので、Zabbixプラグインを追加する必要があります。
Zabbixサーバーで下記のコマンドを実行。

#zabbixプラグインのインストール
grafana-cli plugins install alexanderzobnin-zabbix-app
#grafanaの再起動
systemctl restart grafana-server

Grafanaの再起動後GUI画面を開きなおしzabbixプラグインがインストールされていることを確認します。
ホーム画面に追加されたと表示されていることを確認し、右側の「Enable now」をクリック。
f:id:akngo22:20190502175501j:plain

4.データソースの追加

ダッシュボードのConfigurationからDatasourceをクリックし、Zabbixをデータソースとして登録します。
Name、HTTPのURL、Zabbix API detailsのUsername、Password、ZabbixVersionは最低限入力しましょう。
入力が完了したら、画面下の「Save&Test」をクリックしてデータソースとして認識されたかどうか確認してください。
f:id:akngo22:20190502201451j:plain
テストが失敗した場合、URLが正しいかユーザー名・パスワードが間違っていないか見直します。

ダッシュボード&グラフ作成

ここまできたら後は、ダッシュボード追加してグラフを作成するだけです。
Create⇒Dashboardダッシュボードを新規追加し、AddPanelで好きな表示形式を選択しグラフを作成しましょう。
f:id:akngo22:20190502202548j:plain
とりあえず、Ping疎通に問題ないか確認する画面をSinglestatパネルで、CPU使用率の変動をグラフパネルで作成してみました。数値を文字にマッピングしたり、閾値を設けて現在の状態を分かりやすくすることも可能なので、結構便利だと思います。
後はZabbixの監視項目を色々追加してみるとサーバーの状態を分かりやすく表示できますよ。(今回は適当なので)
どういう風に可視化できるかはGrafanaが例をたくさん示しているので参考にしてみると良いかと!
play.grafana.org
Grafana-zabbixの公式ドキュメントもあるのでこちらも見てみると良いです。
alexanderzobnin.github.io

所感

Grafanaを使うとZabbix以外にもElasticsearchやMySQLなど様々なデータを可視化できて面白いです。
結構簡単に導入することができるのでぜひ試してみてください。

Azure Bot Service を使ってLINEbotを作成する(Cogbot勉強会)

f:id:akngo22:20190420232818j:image

Cogbot 勉強会 2019/04/20に行ってきました

以前slackbot作ったら結構楽しかったので、「今度はLINEbotを作成しよう!」と思って以下の勉強会に参加してきました。

cogbot.connpass.com

初めてLINEのオフィスに行ったのですが、おしゃれすぎて感動しました!こんなところで働いてみたいですね。今回は、LINEで翻訳Bot(多言語対応)を作成しました。

 

LINEbot作成の流れ

  1. Azure サブスクリプションの申し込み(無償版)、LINE Developer の登録をする
  2.  Azure Bot ServiceでEcho botを作成する
  3. LINE Developer ConsoleでMessaging APIの作成、Azure Bot Serviceと接続する
  4. Cognitive Services Translator Text APIの設定をする
  5. Azure App Service Editorでコードを追加する(C#かNode.js)
  6. Azure App Service Editor からのビルドする
  7. 完成!

 ハンズオン資料に沿って進めていったら、つまづくことなくビルドまでいったので1時間程度で終わりました。コードを書くことも少ないのでエンジニア経験の浅い方でもサクサク進むと思います!

完成物

できたものは、こちら。

翻訳kumabotとしてデプロイしました!イラストは自分で書いたものを使ってます。

f:id:akngo22:20190422223720p:image

ちょっと反応が鈍いですが、無料枠で使う分には十分かなと!

自分が書いたイラスト使うと愛着が湧くのでおすすめです。

参考文献

祝 LINE チャンネル追加!Azure Bot Service で翻訳チャットボット作成 (1)Azure Bot Service から LINE 接続 編 - Qiita

祝 LINE チャンネル追加!Azure Bot Service で翻訳チャットボット作成 (2)Cognitive Services Translator Text API 編 - Qiita

所感

  • ちょまどさんの説明がとても分かりやすかった!そしてとても可愛い!
  • ノベルティMicrosoftの黒トートバックがおしゃれ!普段使いできそう!
  • LINEキャラのステッカーも可愛い!
  • オリジナルクッキーも可愛い!
  • クリスピードーナツとタリーズコーヒーの差し入れがありがたかった!

可愛い連呼しましたが、すべてのクオリティが高くて唯々感動しました。。。

今回は資料に沿って作りましたが、他にも応用が利きそうなので違うbotも作ってみたいと思います。

f:id:akngo22:20190422222956j:plain

以上!