読者です 読者をやめる 読者になる 読者になる

【CentOS7.2】【ZABBIX3.2.0】zabbix-agentdが起動しない

さすがに更新さぼりすぎだろということで更新。

 

仕事でAzureを触る機会があり、かつZABBIX導入を検討しなければいけないということで弄っていたのですが、zabbix-agentdが起動しないという問題があったので、メモとして残しておきます。

しかしこれいいなぁ。自宅に構築しよう。

 

1.ZABBIXとは?

・・・を記載すると長くなるのでググってください。まぁ、Web‐UIでシステムリソースを監視できるOSSです。

 

2.で、何が起こったの?

ZABBIXというのは、管理サーバにインストールするzabbix-serverと管理(監視)される側にインストールするzabbix-agentdがあります。

管理サーバ自身も監視したいため、管理サーバには基本両方入れます。

↓こちらがとても分かりやすかったです!

今回インストールしたのは3.2.0ですが、上記ブログのバージョンを読みかえれば基本的にはOK。

さて、ここでおそらく躓きやすいのは、ZABBIXサーバは動いて、ブラウザでもアクセスできた、でもなぜか、「Zabbixサーバーの起動」の状態が「いいえ」になっている。という問題があります(これ自体は今回の主題ではない)。

対策法も上記ブログに記載してあるため、おそらくこれも問題ないかと思います。

要はSELinuxの設定をちゃんとしなければいけない。

 

問題はzabbix-agentdが起動しないということ。これもSELinuxが原因だった。

 

3.何故か情報が見つからない

zabbix-agentdを起動するようにするには以下のようにコマンド打ちます。が、エラーも出ました。

# sudo systemcrl service zabbix-agent.service

Job for zabbix-agent.service failed. See 'systemctl status zabbix-agent.service' and 'journalctl -xn' for details.

 ※Azure上のCentOSはroot権限のものはすべてsudoで動かす

 

/var/log/zabbix/zabbix_agentd.logを見ると、どうも権限がなくてPIDファイルが/var/run/zabbixディレクトリに作成できないというエラーでした。

これに関していろいろ調べましたが、分かったことは、SELinuxをPermissive(アクセス許可)にすると動き、Enforcing(アクセス拒否)と動かないということ。また、zabbix-serverに関しての対応は結構見つかるのに、zabbix-agentdについては何故か情報が見つからず(いくつか関連しそうなのはあるが、解決には結びつかず)。

 

記載によっては # setenforce 0でPermissiveにすればよいと書いてあったり、SELinuxのコンフィグファイルを変更して止めればいいとか書いてあったりでいやそれはさすがに(セキュリティ的に)ダメだろ・・・と。

 

4.で、どうなった

で、対策見つかりました。

まぁ、最初に取り上げた方のブログなんですが。

SELinuxの設定」のところに記載されている内容がまさしくドンピシャで、同じ方法をzabbix-agentdでも行えばよい。

 

# sudo grep zabbix_agent /var/log/audit/audit.log | audit2allow
#=============zabbix_agent_t==============
allow zabbix_agent_t self:process setrlimit;
#

という感じで、grepに引っかかるはずなので、これをこう。

# sudo grep zabbix_agent /var/log/audit/audit.log | audit2allow -M zabbix-limit
******************** IMPORTANT ***********************
To make this policy package active, execute:semodule -i zabbix-limit.pp

zabbix-limit.ppファイルが実行したディレクトリに作成されているはずなので、メッセージの通りに実行する。

# sudo semodule -i zabbix-limit.pp

SELinuxのポリシーに追加されたはずなので、zabbbix-agentdを実行するだけ!

# sudo systemcrl service zabbix-agent.service 

 ※実行成功の時は特に何も出ない。# sudo systemcrl status zabbix-agent.serviceで確認!

【Ubuntu】【16.04】他のUbuntuサーバ(Sambaディレクトリ)のマウント

概要

このブログで検索したら書いてなかったので、備忘録的な感じで。

 

1.同一ネットワーク内のSambaディレクトリをマウントする

事前にマウント用のディレクトリを作ります。

$ sudo mkdir /mnt/hdd

 hddのところは何でもいい。

 

また、cifs-utilsをインストールします。これが無いとネットワーク越しのマウントが動かない

$ sudo apt-get install cifs-utils

 

以下のコマンドでマウントする。ローカルIPを設定していると思いますが、宛先にはそれを指定。

 $ sudo mount.cifs //192.168.11.XX/share /mnt/hdd/ -o username=XXXXX

 パスワードを求められるので、指定したusernameに紐付いているパスワードを設定。


アンマウントは以下のように。

$ sudo umount /mnt/hdd/

2.Linux起動時に自動マウント

いちいちマウントするのは面倒なので、自動マウントするようにします。 /etc/fstabに以下の内容を追加。

$ sudo vi /etc/fstab

//192.168.11.xxx/share /mnt/hdd/ cifs username=XXXX,password=YYYYY,uid=1000,gid=1000 0 0

なお、/etc/fstabに登録後であれば、sudo mount -aのコマンドでfstabの設定を読み込んでマウントができます。

【ESP-WROOM-02】【電子工作】WiFi経由の遠隔操作でサーボモータを動かす

連休中に挑戦してみてやっと出来ました。

1.準備するもの

  • ↓に書いてあるもの

2.ESP-WROOM-02で動かすWebサーバソース

Webサーバを動かすと同時に、http://ローカルIP/servoにアクセスされた時にサーボモータを動かすようにします。

 

 3.電圧の調整

配線は「1.準備するもの」で記載した過去記事のものがベースですが、今回は電池駆動をさせます。単3電池4本で大体5.3Vですが、ESP-WROOM-02の電源電圧は3.0-3.6Vなので、5.3Vは過剰になってしまいます。

で、登場するのが三端子レギュレーターです。これで5.3V→3.3Vに降圧することで、必要な電圧を確保することができます。

サーボモータは4.8Vで動くようですが、5.3Vでも問題なさそうなので電圧調整はなし。

そんなわけで配線は以下の様な感じ。(暇があれば配線図作ります・・・)

f:id:engetu21:20151123173601j:plain

 

f:id:engetu21:20151123173616j:plain

4.実際にWiFi経由でHTTPリクエストをしてみる

ローカルLANにつながっているPCのブラウザからHTTPアクセスします。

1アクセスで90度まで可動→戻るといった感じ。

f:id:engetu21:20151123182622j:plain

 

 

【Raspberry Pi】【電子工作】RIPモーションセンサで照明の点灯/消灯を制御

ラズパイとRIPモーションセンサを使って、照明の点灯/消灯を制御します。

概要図は以下の様な感じ。

f:id:engetu21:20151122184514j:plain

1.必要なもの

人感センサに関しては、こちらを参照。

また、赤外線モジュールは以下の記事で取り上げたirMagicianを使います。

2.ラズパイで動かす人感センサとHTTP送信を組み合わせたソース

人感センサでの検知をトリガにしてHTTPを実現するためには、以下の様な形でのソースコードにしました。

基本的には30秒間誰もいなければ消灯、5秒間のうち誰か居れば点灯をします。

 3.サーバで動かすWebサーバ設定とソース

サーバ側でHTTPリクエストを受信できるようにWebサーバを動かす必要があるのですが、Apacheを入れるのも何だな・・・と思い、検索で見つけた「Bottle」(http://bottlepy.org/docs/dev/index.html)を使うことにしました。これはPythonで作られたもので、1ファイルで動作するという超お手軽なWebサーバフレームワークです。

Bottleの使い方はこちらを参照。

HTTP受信用に以下のソースをbottle.pyと同じディレクトリ配下に用意して実行します(実行は裏で動けるようにscreenコマンドなどを使う)。

$ screen

$ python  HttpReceive_Syoumei.py

 

ソースが正常に動けば、照明の自動点灯/消灯が実現できます。

【Raspberry Pi】IPアドレスの設定方法(OS新バージョン)

Raspbianの旧バージョンでは、/etc/network/interfacesを弄ることで固定IPアドレス設定をできたのですが、新バージョンではやり方が異なるのでメモ書き。

 

1.固定IPアドレスの設定

新バージョンでは固定IPアドレスは/etc/dhcpcd.confを変更することで実現します。

$ sudo vi /etc/dhcpcd.conf

 

interface eth0
static ip_address=192.168.XXX.XXX/24
static routers=192.168.XXX.XXX
static domain_name_servers=XXX.XXX.XXX.XXX

指定するインタフェースはifconfigコマンドで予め調べておくこと(有線は基本的にeth0と思いますが)。

書き換えを完了したら、dhcpcdの設定を更新します。

$ sudo service dhcpcd reload

 

2.設定反映の確認

ifconfigコマンドで設定が反映されているか確認します。

$ ifconfig

eth0 Link encap:イーサネット ハードウェアアドレス b8:27:eb:61:cf:69
inetアドレス:192.168.XXX.XXX ブロードキャスト:192.168.XXX.XXX マスク:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:14519 エラー:0 損失:6 オーバラン:0 フレーム:0
TXパケット:5851 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:2051370 (1.9 MiB) TXバイト:426619 (416.6 KiB)

inetアドレス、ブロードキャスト、マスクに設定した内容が反映されていればOK。

【ESP-WROOM-02】【電子工作】Webサーバとして動作させる

ESP-WROOM-02をWebサーバとして動作させます。

 1.準備するもの

以下と一緒。

2.HTTPサーバとしての設定(ソース変更)

HTTPサーバとして動作させる場合は、ArduinoIDEでスケッチ例を利用するのが一番手っ取り早い。

以下のサイトのとおりに準備しておけば、スケッチ例にWebServerのソース例が出てくる。

技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法 - Qiita

ファイル->スケッチの例->ESP8266WebServer->AdvancedWebServer

f:id:engetu21:20151121225258j:plain

 

SSID、PASSWORDは各環境に合わせて変更。

また、固定ローカルIPを使いたいので、以下の設定を追加する。

#include <ESP8266WiFi.h>

(略)

const char *ssid = "**********";
const char *password = "**********";

//////////////// ip-address ////////////////
IPAddress ip(192, 168, XXX, XXX);

IPAddress gateway(192, 168, XXX, XXX);

IPAddress subnet(255, 255, 255, 0);
//////////////////////////////////////////

(略)

void setup ( void ) {

 WiFi.config( ip, gateway, subnet );

IPアドレスの設定はWiFi.configを使う。

注意すべきは、ArduinoWiFiシールドを使った場合と設定方法が少し違うということ。

WiFiシールドを使った場合、#include <WiFi.h>ですが、ESP-WROOM-02では#include <ESP8266WiFi.h>となる。

 

WiFi.hのソースコード例はArduino - WiFiConfigの通りで、Syntaxの記載箇所の通り、

WiFi.config(ip, dns, gateway, subnet);

とすることでIPアドレスの設定は可能。

しかし、ESP8266WiFi.hの場合は、esp8266-Arduino/ESP8266WiFi.h at master · sandeepmistry/esp8266-Arduino · GitHubで記載されている通り、

config(IPAddress local_ip, IPAddress gateway, IPAddress subnet);

の形で設定してあげないといけない。

※引数に注意。

 

3.HTTPサーバとして動作させる

そんなわけで、固定ローカルIPも設定したうえでコンパイルをし、書き込みモード(UART Download Mode)でスケッチ書き込みをする。

その後、実行モード(Flash Boot Mode)に変更してアクセスしてみる。サーバとして正常に動作していればシリアルモニタには以下のように表示される。

f:id:engetu21:20151121233108j:plain

 

ブラウザで表示すると以下の様に表示される。

f:id:engetu21:20151121235420j:plain

 

【ESP-WROOM-02】【電子工作】ATコマンドを使うまで

ESP-WROOM-02を買いまして。

使えるようにセットアップします。

f:id:engetu21:20151108151653j:plain

 

1.そもそもESP-WROOM-02とは?

まぁ、こちらを御覧ください。

親指サイズでWiFi通信を実現し、クライアントとしてはもちろん、Webサーバとして動かすこともできる優れものとのこと。

例えば、人感センサと組み合わせて外に設置し、訪問者があればWiFi通信で部屋の中のサーバを介してツイートできる、とかいろいろできるようになります。

何よりの魅力は1000円以下で購入できるということです。

 

2.準備するもの

  1. ESP-WROOM-02ピッチ変換済みモジュール《フル版》 - スイッチサイエンス

  2. FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) - スイッチサイエンス

  3. ブレッドボード

  4. ジャンパーコード(オスーオス)

  5. 抵抗(10kΩ)

  6. ピンヘッダ
  7. ハンダごて

 

3.接続

※いつもどおりFritzingで作ろうと思ったものの、パーツが見つからず・・・。写真と文章で残します。

 

私が買ったものはスイッチサイエンスさんのESP-WROOM-02ピッチ変換済みモジュール《フル版》 でして、これにはまずピンがついていないため、ピンヘッダのハンダ付けが必要になります。(※初ハンダ付け)

 

ハンダ付けが問題なく終われば、次はブレッドボードによる接続です。

先人たちのものを参考にしたものの、ピン配置には苦戦しました。

それでもポイントとなるものがいくつか有りまして、

  1. ESP-WROOM-02にはファームウェアへの書き込みモード(UART Download Mode)と実行モード(Flash Boot Mode)がある。
  2. モード変更の鍵をにぎるのは「IO15」「IO2」「IO0」の3つ
  3. 2のそれぞれには10kΩの抵抗を挟み、Pull Up、Pull Down接続をさせなければならない
  4. 「EN」もPull Upで接続しなればならない(10kΩの抵抗を挟む)。

ピンアウトについては、ESP-WROOM-02を使ってみる : Eleclog.さんで図で整理されているため、こちらが参考になります。

というわけで、下手くそですが私が設定した配線は以下のとおりです。

なお、USBシリアル変換アダプタは3.3Vでジャンパピンを設定しておきましょう。

f:id:engetu21:20151108160823j:plain

f:id:engetu21:20151108161021j:plain

 

USBシリアル変換アダプタ <-- --> ESP-WROOM-02

---------------------------------------------------------------------------

VCC <-- --> 3.3V

VCC <-- 抵抗(10kΩ) --> EN

GND <--  --> GND

TX <--  --> RXD

RX <--  --> TXD

GND <-- 抵抗(10kΩ) --> IO15

VCC  <-- 抵抗(10kΩ) --> IO2

VCC  <-- 抵抗(10kΩ) --> IO0

※上記のIO0をVCCに繋げれば実行モードGNDに繋げれば書き込みモードになります。写真はVCCに繋げているので実行モードで動きます。

 

なお、Arduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(準備編) | Device Plus - デバプラで紹介されているように、ジャンパピンで制御できる形のものが販売されていますので、その場合は配線が上記と異なります。

 

USBシリアル変換アダプタは、何もしていないとUSBをWindowsに接続しても認識されないため、ドライバを入れる必要があります。以下を参照。

FTDIのUSBシリアル変換器のドライバのインストール法(1) - しなぷすのハード製作記

 

 3.Arduino IDEの設定

こちらのサイトを参考に。

技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法 - Qiita

 

ボード設定は、「Generic ESP8266 Module」を選択していれば問題ないと思います(たぶん)。

 

4.Arduino IDEのシリアルモニタでATコマンドを実行してみる

シリアルモニタを起動してATコマンドを実行します。

なお、ATコマンドはピン設定が実行モード(Flash Boot Mode)になっていないと実行できません。

f:id:engetu21:20151108170454j:plain

 

AT、AT+GMRとコマンドを打ってみます。

ただし、右下の改行設定とビットレートをそれぞれ「CRおよびLF」、「115200bps」にしないと正常に動きません。

f:id:engetu21:20151108171137j:plain

配線が問題なければ、上記のように応答が返ってきます!

 

5.ファームウェアのアップデート

4の画像を見ればわかりますが、ATバージョンが0.25、SDKバージョンも1.1.1となっていることから、現行バージョンより若干古いです。

ので、アップデートをします。

アップデートの際には書き込みモード(UART Download Mode)に変更し忘れないように。

 

参考サイト:ねむいさんのぶろぐ | ESP-WROOM-02を使ってみる2 -外付けSPIフラッシュの書き換え-

 

以下のサイトから必要なモノを取得してきます。

FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar:http://bbs.espressif.com/viewtopic.php?f=5&t=433

esp_iot_sdk_v1.4.0_15_09_18.zip:http://bbs.espressif.com/viewtopic.php?f=46&t=1124(ファイルは下の方)

 

 FLASH_DOWNLOAD_TOOLSを実行すると以下の様な画面になるため、参考サイトを見ながら設定を行います。で、実行

 

f:id:engetu21:20151108172633j:plain

bin\boot_v1.4(b1).bin:0x0

bin\at\1024+1024\user1.2048.new.5.bin:0x1000

bin\blank.bin:0xFE000

bin\esp_init_data_default.bin:0x3FC000

bin\blank.bin:0x3FE000

 

書き込み中はコンソールで以下のように表示されます。

Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x00000800... (0 %)
Leaving...
Erasing flash...
head: 15 ;total: 69
erase size : 221184
Writing at 0x00045000... (95 %)
Leaving...
Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x000fec00... (97 %)
Leaving...
Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x003fc000... (97 %)
Leaving...
Erasing flash...
head: 1 ;total: 1
erase size : 4096
Writing at 0x003fec00... (98 %)
Leaving...
com closed 

 正常に書き込みが完了すれば「Finish」と表示されます。

 

再度、ATコマンド実行のため、実行モード(Flash Boot Mode)にピンを変更し、シリアルモニタからコマンドを実行します。

f:id:engetu21:20151108173230j:plain

AT、SDKともにバージョンがアップされました!