ksaitoの日記

日々試したことの覚え書き

Dockerhubからpullしてきたzabbix2.4のodbc設定

移転しました。

自動的にリダイレクトします。

Dockerhubからpullしてきたzabbix2.4でodbc設定設定をするために確認したことです。

やりたかったこと

odbc設定をすることで、zabbixのアイテムからSQLで取得できる値をモニタする。 dbforbixもあるけど、アドホックなモニタの場合には設定が面倒なので、お手軽なデータベースモニタを使いたい。

odbcのドライバを確認

zabbix/zabbix-2.4:2.4.4のイメージを使ってテストします。 odbcinstコマンドでインストール済みのドライバを確認します。

ubuntu@trusty64:~$ docker run -it zabbix/zabbix-2.4:2.4.4 bash
[root@42947be8ac27 /]# odbcinst -q -d
[PostgreSQL]
[MySQL]
[root@42947be8ac27 /]# 

デフォルトでPostgreSQLMySQLのドライバがインストールされています。 ドライバは、/etc/odbcinst.initに設定されています。

[root@42947be8ac27 /]# cat /etc/odbcinst.ini | egrep "^\[|^Desc"
[PostgreSQL]
Description = ODBC for PostgreSQL
[MySQL]
Description = ODBC for MySQL
[root@42947be8ac27 /]# 

接続テスト

odbc.iniファイルの作成

接続先の設定ファイルは、/etc/odbc.iniですが、デフォルトではファイルはありません。 下記のコマンドを実行すると空の設定ファイルが作成されます。

[root@11b55e2f8bb0 /]# isql -v
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
[root@11b55e2f8bb0 /]# ls -l /etc/odbc.ini
-rw-r--r-- 1 root root 0 Jan 31 09:40 /etc/odbc.ini
[root@11b55e2f8bb0 /]#

接続先の設定

下記のようにodbc.iniに接続情報を設定します。

[root@11b55e2f8bb0 /]# cat /etc/odbc.ini
[zabdb]
Description           = MySQL connection to 'zabbix' database
Driver                = MySQL
Database              = zabbix
Server                = zabdb
USER                  = admin
Password              = pass
Port                  = 3306

isqlを使って接続を確認します。 こんな感じで接続してSQLが発行できれば設定完了です。

[root@11b55e2f8bb0 /]# isql -v zabdb
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select count(*) from users;
+---------------------+
| count(*)            |
+---------------------+
| 2                   |
+---------------------+
SQLRowCount returns 1
1 rows fetched
SQL> 

うまくいかない場合は、mysqlクライアントを使って接続することで環境の問題かunixODBC設定の問題かき分けができます。