エージェント(監視される)側
net-snmpのインストールと設定
sudo -s
dnf install net-snmp net-snmp-utils -y
#全て見えるようにする("view ... .1"だけにする)
sed -ri '0,/^view/ s/^(view.+) \..*/\1 .1/;/^view.+ \.1\./d' /etc/snmp/snmpd.conf
systemctl restart snmpd
#確認
snmpwalk -v 2c localhost -c public
#ポートを開けておく
firewall-cmd --add-service=snmp --permanent
firewall-cmd --reload
389dsのSNMP対応
#AgentXプロトコル(?)を有効にする
echo 'master agentx' >> /etc/snmp/snmpd.conf
systemctl restart snmpd
#ldap-agentのインストール
yum install 389-ds-base-snmp -y
#インスタンスを指定
echo 'server slapd-localhost' >> /etc/dirsrv/config/ldap-agent.conf
#SELinuxが有効だと何故か動作しない
setenforce 0
#起動
systemctl start dirsrv-snmp
#確認
snmpwalk -v 2c localhost -c public .1.3.6.1.4.1.2312.6.1.1 -m /usr/share/dirsrv/mibs/redhat-directory.mib
↓
RHDS-MIB::dsAnonymousBinds.389 = Counter64: 0
RHDS-MIB::dsUnAuthBinds.389 = Counter64: 0
RHDS-MIB::dsSimpleAuthBinds.389 = Counter64: 161
RHDS-MIB::dsStrongAuthBinds.389 = Counter64: 0
RHDS-MIB::dsBindSecurityErrors.389 = Counter64: 0
RHDS-MIB::dsInOps.389 = Counter64: 13938
RHDS-MIB::dsReadOps.389 = Counter64: 0
RHDS-MIB::dsCompareOps.389 = Counter64: 0
RHDS-MIB::dsAddEntryOps.389 = Counter64: 6753
RHDS-MIB::dsRemoveEntryOps.389 = Counter64: 6753
RHDS-MIB::dsModifyEntryOps.389 = Counter64: 99
RHDS-MIB::dsModifyRDNOps.389 = Counter64: 0
RHDS-MIB::dsListOps.389 = Counter64: 0
RHDS-MIB::dsSearchOps.389 = Counter64: 11
RHDS-MIB::dsOneLevelSearchOps.389 = Counter64: 0
RHDS-MIB::dsWholeSubtreeSearchOps.389 = Counter64: 11
RHDS-MIB::dsReferrals.389 = Counter64: 0
RHDS-MIB::dsChainings.389 = Counter64: 0
RHDS-MIB::dsSecurityErrors.389 = Counter64: 0
RHDS-MIB::dsErrors.389 = Counter64: 12241
RHDS-MIB::dsConnections.389 = Counter64: 0
RHDS-MIB::dsConnectionsInMaxThreads.389 = Counter64: 0
RHDS-MIB::dsMaxThreadsHits.389 = Counter64: 1
マネージャ(監視する)側
- OS: CentOS7 (CenOS8のepelがおかしいので)
- IPアドレス: 192.168.11.200
SNMP接続を確認
sudo -s
yum install net-snmp-utils -y
snmpwalk -v 2c 192.168.11.100 -c public
(zabbixのための)epelインストール
yum install epel-release -y
#grep enabled /etc/yum.repos.d/epel.repo
yum list "zabbix40*"
↓
利用可能なパッケージ
zabbix40.x86_64 4.0.17-1.el7 epel
zabbix40-agent.x86_64 4.0.17-1.el7 epel
zabbix40-dbfiles-mysql.noarch 4.0.17-1.el7 epel
zabbix40-dbfiles-pgsql.noarch 4.0.17-1.el7 epel
zabbix40-dbfiles-sqlite3.noarch 4.0.17-1.el7 epel
zabbix40-proxy.noarch 4.0.17-1.el7 epel
zabbix40-proxy-mysql.x86_64 4.0.17-1.el7 epel
zabbix40-proxy-pgsql.x86_64 4.0.17-1.el7 epel
zabbix40-proxy-sqlite3.x86_64 4.0.17-1.el7 epel
zabbix40-server.noarch 4.0.17-1.el7 epel
zabbix40-server-mysql.x86_64 4.0.17-1.el7 epel
zabbix40-server-pgsql.x86_64 4.0.17-1.el7 epel
zabbix40-web.noarch 4.0.17-1.el7 epel
zabbix40-web-mysql.noarch 4.0.17-1.el7 epel
zabbix40-web-pgsql.noarch 4.0.17-1.el7 epel
zabbixインストール
yum install zabbix40-server-mysql zabbix40-web-mysql -y
#(警告を出さないための)タイムゾーンの設定
sed -ri 's|^.*(php_value +date.timezone).*|\1 Asia/Tokyo|' /etc/httpd/conf.d/zabbix.conf
systemctl restart httpd
#管理画面のためのポートを開ける
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
データベースの準備
#MySQLのインストール
yum install mariadb-server -y
systemctl start mariadb
#データベースの作成
mysql -uroot -e "create database zabbix charset utf8"
#上データベースの管理者の設定
mysql -uroot -e "delete from mysql.user where Host<>'localhost' or User<>'root'"
mysql -uroot -e "grant all on zabbix.* to zabbix"
mysql -uroot -e "flush privileges"
#初期データを投入
mysql -uzabbix zabbix < /usr/share/zabbix-mysql/schema.sql
mysql -uzabbix zabbix < /usr/share/zabbix-mysql/images.sql
mysql -uzabbix zabbix < /usr/share/zabbix-mysql/data.sql
環境設定
- セットアップ
- http://192.168.11.200/zabbix
- "Next step"(5回)
- "Finish"
- ログイン
- Username: admin
- Password: zabbix
- "Sign in"
- 日本語
- ヘッダ右端の人アイコン
- Language: Japanese
- "Update"
zabbixサーバーを起動
setenforce 0
systemctl restart zabbix-server
ホストの追加
- 設定 > ホスト > ホストの作成
- ホスト名: CentOS8 389ds
- グループ: Linux servers
- エージェントのインターフェース (使わないけど必須なので)
- IPアドレス: 192.168.11.100
- ポート: 10050
- SNMPインターフェース
- IPアドレス: 192.168.11.100
- ポート: 161
- "テンプレート"タブ (とりあえずそれっぽい監視項目を設定してみる)
- 新規テンプレートをリンク > 選択
- 「Template OS Linux SNMPv2」と「Template App Ldap Service」を選択 > 追加
- "マクロ"タブ ("Template OS Linux SNMPv2"用)
- マクロ: {$SNMP_COMMUNITY}
- 値: public
- どこかのタブの"追加"ボタン
389ds用の監視
監視項目のリストを作る
#389ds用のMIBファイルをコピー
scp hoge@192.168.11.100:/usr/share/dirsrv/mibs/redhat-directory.mib .
#MIB→OIDの対応表
snmptranslate -Tz -m ./redhat-directory.mib | grep -F '1.3.6.1.4.1.2312.6.1.1.' | sed 's/"//g;s/$/.389/' > items
Zabbix API で設定
#JSONパーサをインストール
yum install jq -y
#curlのエイリアスを設定
alias curl='curl -sS -XPOST -H Content-Type:application/json-rpc http://localhost/zabbix/api_jsonrpc.php'
#ログイン
auth=$(curl -d '{"jsonrpc":"2.0", "id":1, "method":"user.login", "params":{"user":"admin","password":"zabbix"}}' | jq -r ".result")
#テンプレートのグループID
group=$(curl -d '{"jsonrpc":"2.0", "id":1, "auth":"'$auth'", "method":"hostgroup.get", "params":{"filter":{"name":"Templates"}}}' | jq -r ".result[0].groupid")
#新しく作ったホストID
host=$(curl -d '{"jsonrpc":"2.0", "id":1, "auth":"'$auth'", "method":"host.get", "params":{"filter":{"name":"CentOS8 389ds"}}}' | jq -r ".result[0].hostid")
#テンプレートを作成
tmpl=$(curl -d '{"jsonrpc":"2.0", "id":1, "auth":"'$auth'", "method":"template.create", "params":{"host":"389ds SNMP", "groups":[{"groupid":'$group'}], "hosts":[{"hostid":'$host'}]}}' | jq -r ".result.templateids[0]")
#各監視項目を追加
cat items | while read mib oid; do
curl -d '{"jsonrpc":"2.0", "id":1, "auth":"'$auth'", "method":"item.create", "params":{"hostid":'$tmpl', "name":"'$mib'", "key_":"'$mib'", "type":4, "value_type":3, "delay":30, "snmp_community":"public", "snmp_oid":"'$oid'"}}' | jq
done
unalias curl