amegonの雑なブログ

日常的なものから技術的なものまでメモの雑記

Miracle Linux 8 に snmposter をインストールする ansible playbook を作った

playbook を作成した経緯

最近技術的なこともやっていなかったので、リハビリがてら ansible の playbook を書いてみた。
前回の記事で書いた snmposter のインストールを実施する ansible の playbook を作成してみた。
そんなに何回も使用するものでもなさそうですが、よかったら使ってみてください。

前回の記事

amegon.hatenablog.com

Playbook

github.com

MiracleLinux 8 に snmposter をインストール & 実行

きっかけ

自身の snmposter 環境が CentOS 7 で稼働しているので、そろそろ新しいバージョンの RHEL OS に移行しようとかと思いトライしてみた。

結果

  • MiracleLinux 8 で snmposter を動かすことができた
  • 試しに同じ手順を MiracleLinux 9 に対して実行してみたが、snmposter はインストールできなかった
    • というか python2 がインストールできなった
    • RHEL9 系で snmposter を動作させるには python3 対応が必要かも
  • インストールが完了すれば、起動・停止の手順は過去と同じだった。手順は過去記事を参照する形式にした。
    • 過去記事:

amegon.hatenablog.com

インストール手順

必要モジュールのインストール

yum -y install python2-devel gcc wget tar

仮想環境の作成

pip2 install virtualenv
virtualenv /snmposter

仮想環境の有効化

source /snmposter/bin/activate

必要モジュール TwistedSNMP のインストール

wget http://downloads.sourceforge.net/project/twistedsnmp/twistedsnmp/0.3.13/TwistedSNMP-0.3.13.tar.gz
tar -xzf TwistedSNMP-0.3.13.tar.gz
cd TwistedSNMP-0.3.13
python2 setup.py install
cd ..

必要モジュール pysnmp-se のインストール

wget http://downloads.sourceforge.net/project/twistedsnmp/pysnmp-se/3.5.2/pysnmp-se-3.5.2.tar.gz
tar -xzf pysnmp-se-3.5.2.tar.gz
cd pysnmp-se-3.5.2
python2 setup.py install
cd ..

snmposter のインストール

pip2 install snmposter

snmposter実行用ファイルの準備

以下の記事を参照。

snmposterを使ってみる - amegonの雑なブログ

snmposter の実行

以下の記事を参照。

snmposterを使ってみる - amegonの雑なブログ

停止手順

以下の記事を参照。

snmposterを使ってみる - amegonの雑なブログ

注意事項

以下の記事を参照。

snmposterを使ってみる - amegonの雑なブログ

備考

実行ログは時間があったら掲載します。。

ダッシュボード作成 by Zabbix 6.0

きっかけ

Zabbix Conference 2023 を見ていてマップコンテストがダッシュボードコンテストに変わっていることを知る。
自分だったら何を作れるかなぁ、と考えているうちに作り始めていた。

作成するダッシュボードの企画

以前から頭痛に悩まされていて Zabbix で気圧の監視を始めていた。
もともとトリガーで気圧の変動時に障害検知とする設定は作っていた。
これをダッシュボードでさっと確認するにはどんな要素がいるかなと考えた。

  • 現在障害発生中かどうか
    • 障害 = 今後頭痛が発生する可能性が高い ということになるので、まず障害状態を知りたい
  • 現在時刻の確認
    • このあとの気圧の推移を知るためにも、現在時刻を知りたい
  • 今後の気圧の推移はどうなっているか
    • 今後障害は発生する、もしくは発生し続けるのかを把握したい

できたダッシュボード

以下のものができました。

ダッシュボード全体図

構成要素と表示内容

  • 日本時間
  • 気圧変動予報
    • マップで作製したものを表示
    • 気圧の変動アラートが発生しているかいないかをイメージで表示
  • 気圧予報グラフ(現在から12時間後)

    • グラフウィジェットを使用
    • 気圧の予報情報は OpenWetherMap から API で取得
    • 取得したデータは未来の時間情報で Zabbix に記録
    • グラフウィジェットでは (現在時間-2h) ~ (24時間先の未来) までを表示固定
    • Zabbix 6.0 から表示期間の未来固定化がすばらしい(個人的感想)
  • 気圧変動アラート(現在から未来12時間の間で5hPaの変動を検知した場合)

おまけ

気圧変動アラートが発生した際には Slack にも通知を行って気づけるようにした。

    • (Slack に送信している気圧のグラフは Python で作成したものを使用してます)

Zabbix のマップでネットワーク機器の前面状態を作成してみた(しかしイマイチ..)

きっかけ

Zabbix のマップをいじっているうちに、ネットワーク機器の前面パネルを表示してポートの状態が正常と障害で表示が切り替えられそうだな、と思った。
いろいろなベンダーで同様の機能が提供されているか、それを Zabbix だけで実行できるのではと思った次第。

作り方

以下に抜粋。

ホストの作成

以下のようにしてホストを作成。

  • ネットワーク機器のポートごとにホストを作成
  • ホストにはアイテム1つとトリガー1つを作成
  • トリガーは ifOperStatus が 1 以外だったら障害、それ以外(=1)だったら復旧 とした

アイコンの作成

ネットワーク機器前面の絵

ネットワーク機器の前面パネルの絵を準備。
今回はアライドテレシスの AT-x210-9GT を使用。
理由は同機器を所有しているからと絵の入手が簡単だったから。
絵は以下のサイトからダウンロードして加工した。

https://www.allied-telesis.co.jp/library/parts/switch/dcycle.html

ポート状態表示用の絵

正常時、障害時、メンテナンス時の絵を以下のように準備した。
上下それぞれのポートに対して準備をする。

  • 正常時
  • 障害時
  • メンテナンス時

マップの作成

Zabbix で以下のようにマップを作成

  • ネットワーク機器前面の絵を配置
  • ポート状態の 正常時 の絵を用いて、ポートごとに作成したホストと紐づけ設定を行う
    • この作業をポート数分繰りかえす
  • ネットワーク機器前面の絵のポートの上に、上記で作成したポート(ホストとひもづけ済)をのせる

    • この作業をポート数分繰りかえす
  • 作成過程のスクショ

  • 出来上がり

監視を実施

以下の状態で監視されているネットワーク機器をマップで表示してみた。

  • ポート 1-3 はリンクアップ
  • ポート 4-8 はリンクダウン

結果

正常時にはポートが緑色表示、障害時にはポートが赤色表示となりわかりやすいと感じた。
しかし、障害時には何かしら障害の情報が表示されてしまいそちらに目がいってしまい表示が汚くなる印象を受けた。

障害時に表示するメッセージの種類をもう少しカスタマイズすることができたら利用価値があるかもしれない。
今回はそれがわかったことがOKとして、また別の機会があったら表示上のカスタマイズをすすめてみようと思ったり思わなかったり。

Android に Zabbix Agent をインストール(非公式)

概要

  • Android で以下のアプリを発見したので入れてみました。
  • Zabbix サーバーで使用するテンプレートも準備してみました。

Android に Unofficial Zabbix Agent のインストール

以前 Android 12L を適用した Nexus 7 に以下をインストールした。

play.google.com

特にインストールは困らず。

インストール後、Android にインストールしたエージェントに Zabbix サーバーの IP アドレスを設定して起動した。

Zabbix 用監視テンプレート

以下に作成したものを保存しました。
一部監視データの取得が未確認なものも含んでいます。
(通信キャリアの情報など。私の Nexus 7Wifi のみモデルのため確認できず。。)
うまく使ってください。

github.com

監視データの取得具合

以下のような感じ。

Zabbix から Slack への通知

はじめに

以前 Zabbix から Slack へアラート通知する設定をしてから時間がたっていたことで、Slack の api ページが若干表示が変更になっていたことと、前回の設定のメモがあまりにもいまいちだったので再設定を兼ねて設定方法をメモしました。

大きな流れ

  • Slack の api 機能で bot を作成
  • Slack ワークスペースで通知先チャンネルの設定
  • Zabbix のメディアタイプ設定
    • この時 slack で作成した bot の情報をパラメータとして設定
  • Zabbix のアクション設定で上記のメディアタイプを指定

Slack apibot の作成

以下の URL にアクセス

https://api.slack.com/

表示された画面で Your apps を選択

表示された画面で Create New App ボタンを選択

表示された画面で From Scratch を選択

表示された画面で以下の情報を入力・選択して Create App ボタンを押す

  • App Name
    • App の名前。任意でOK。
  • Pick a workspace to develop your app in:
    • App を使用する workspace を選択する。

以下の画面に遷移したら OAuth & Permission を選択

遷移した画面で中断まで画面をスクロールし、Scopes 内の Add an OAuth Scope ボタンを押す

表示された選択肢から chat:write を選択

chat:write が追加されたことを確認する

画面を上部にスクロールし、OAuth Tokens for Your Workspace 内の Install to Workspace ボタンを押す

アクセス許可の画面が表示されるので 許可する を選択

画面が戻ってくると OAuth Tokens for Your Workspace 内の Bot User OAuth Token に Token が表示されているのでメモっておく

Slack ワークスペースで通知先チャンネルの設定

Slack ワークスペースの App に、先ほど作成した botSlack Notification from Zabbix が表示されていることを確認

次に Zabbix からの通知を受け取りチャンネルを作成する
ここでは #zabbix_alert として作成

チャンネルを選択して右クリック → チャンネル詳細を表示する を選択する

表示された画面で インテグレーション を選択し App 内の アプリを追加する を選択する

表示された画面で、前項で作成した bot Slack Notification from Zabbix追加 ボタンを押す

Zabbix のメディアタイプ設定

Zabbix にログインして 管理 → メディアタイプを選択し、その中の Slack を選択

オリジナルの設定は残しておきたいので、画面最下部に移動して 複製 を選択

複製したメディアタイプで以下の項目の設定を更新して保存する

項目 設定内容 設定例
名前 任意 Slack_Zabbix_Alert
bot_token Slack api で生成された Bot User OAuth Token -
zabbix_url 自身の Zabbix サーバーの URL http://192.168.1.1/zabbix

次にテスト実行してみる。
この際以下を変更して テスト ボタンを押す。

  • channel:zabbix_alert
  • event_id:1
  • event_nseverity:0
  • event_source:0

Slack 側で受信できたことを確認

Zabbix のアクション設定で上記のメディアタイプを指定

管理 → ユーザー で通知を実施するユーザーを選択

メディア を選択して以下のように設定

設定 → アクション で Slack に通知したいアクション設定に対して、先ほど作成したユーザーのメディアを選択して設定する

Miracle Linux 上の docker で Redmine を起動

目的

別の場所で docker で稼働している Redmine 環境を移行するための受け皿を作成したい。
そのためにまずは同じ環境を作成してみる。

実行ディレクトリを作成して移動

実行コマンド

sudo mkdir /usr/local/bin/redmine
cd /usr/local/bin/redmine/
[root@test244 ~]# sudo mkdir /usr/local/bin/redmine
[root@test244 ~]#
[root@test244 ~]# cd /usr/local/bin/redmine/
[root@test244 redmine]# ls -al
合計 8
drwxr-xr-x. 2 root root 4096 10月 10 22:03 .
drwxr-xr-x. 4 root root 4096 10月 10 22:03 ..
[root@test244 redmine]#

docker-compose.yml を作成

実行コマンド

sudo vi /usr/local/bin/redmine/docker-compose.yml

内容

version: '3.7'

services:
    redmine:
        container_name: redmine-4.0.4
        image: redmine:4.0.4-alpine
        restart: always
        ports:
            - 8080:3000
        volumes:
            - ./data/plugins:/usr/src/redmine/plugins
            - ./data/themes:/usr/src/redmine/public/themes
        environment:
            REDMINE_DB_MYSQL: redmine-db-4.0.4
            REDMINE_DB_PASSWORD: redmine

    redmine-db-4.0.4:
        image: mariadb:10.8.2
        container_name: redmine-db-4.0.4
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: redmine
            MYSQL_DATABASE: redmine
        volumes:
            - ./data/db:/var/lib/mysql
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci

実行ログ

[root@test244 redmine]# cat /usr/local/bin/redmine/docker-compose.yml
version: '3.7'

services:
    redmine:
        container_name: redmine-4.0.4
        image: redmine:4.0.4-alpine
        restart: always
        ports:
            - 8080:3000
        volumes:
            - ./data/plugins:/usr/src/redmine/plugins
            - ./data/themes:/usr/src/redmine/public/themes
        environment:
            REDMINE_DB_MYSQL: redmine-db-4.0.4
            REDMINE_DB_PASSWORD: redmine

    redmine-db-4.0.4:
        image: mariadb:10.8.2
        container_name: redmine-db-4.0.4
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: redmine
            MYSQL_DATABASE: redmine
        volumes:
            - ./data/db:/var/lib/mysql
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci

[root@test244 redmine]#

起動

実行コマンド

docker-compose up -d

実行ログ

[root@test244 redmine]# docker-compose up -d
[+] Running 25/25
 ? redmine-db-4.0.4 11 layers [???????????]      0B/0B      Pulled        35.8s
   ? 08c01a0ec47e Pull complete                                            5.5s
   ? a2bcb14c13a1 Pull complete                                            0.8s
   ? 29c56760f879 Pull complete                                            1.3s
   ? a95000a218fc Pull complete                                            2.0s
   ? a765d76e68d9 Pull complete                                            2.0s
   ? c6945738f085 Pull complete                                            3.0s
   ? 62787b7c58c5 Pull complete                                            2.7s
   ? 85ee39c28fa6 Pull complete                                            3.4s
   ? bee45abd643a Pull complete                                           17.8s
   ? b0f20114a997 Pull complete                                            4.2s
   ? f59b42092777 Pull complete                                            4.9s
 ? redmine 12 layers [????????????]      0B/0B      Pulled                37.7s
   ? 9d48c3bd43c5 Pull complete                                            6.9s
   ? 9ce9598067e7 Pull complete                                            6.5s
   ? 278f4c997324 Pull complete                                            7.3s
   ? 867dd521f6d0 Pull complete                                           12.1s
   ? c69cba5b7867 Pull complete                                            8.3s
   ? f8e706cde8a6 Pull complete                                            9.2s
   ? fd530ab1d01f Pull complete                                           19.9s
   ? 5fbab007b5e2 Pull complete                                           12.9s
   ? 7568bba59c7a Pull complete                                           18.6s
   ? c9b656c27197 Pull complete                                           19.5s
   ? e6c6e76c252d Pull complete                                           29.6s
   ? ee6f52a8cbac Pull complete                                           24.7s
[+] Building 0.0s (0/0)                                          docker:default
[+] Running 3/3
 ? Network redmine_default     Created                                     0.5s
 ? Container redmine-db-4.0.4  Started                                     0.2s
 ? Container redmine-4.0.4     Started                                     0.2s
[root@test244 redmine]#

動作状況確認

CLI コマンド

実行コマンド

docker ps -a

実行ログ

[root@test244 redmine]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                   CREATED          STATUS          PORTS                                       NAMES
cf966516d36e   redmine:4.0.4-alpine   "/docker-entrypoint.…"   16 seconds ago   Up 3 seconds    0.0.0.0:8080->3000/tcp, :::8080->3000/tcp   redmine-4.0.4
2785c742e89d   mariadb:10.8.2         "docker-entrypoint.s…"   16 seconds ago   Up 15 seconds   3306/tcp                                    redmine-db-4.0.4
[root@test244 redmine]#

ブラウザで表示確認

表示できた。

参考

初期は以下の docker-compose.yml を使用していたが、コンテナが起動できなかった

docker-compose.yml

version: '3.7'

services:
    redmine:
        container_name: redmine-4.0.4
        image: redmine:4.0.4-alpine
        restart: always
        ports:
            - 8080:3000
        volumes:
            - ./data/plugins:/usr/src/redmine/plugins
            - ./data/themes:/usr/src/redmine/public/themes
        environment:
            REDMINE_DB_MYSQL: redmine-db-4.0.4
            REDMINE_DB_PASSWORD: redmine

    redmine-db-4.0.4:
        image: mariadb
        container_name: redmine-db-4.0.4
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: redmine
            MYSQL_DATABASE: redmine
        volumes:
            - ./data/db:/var/lib/mysql
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci

docker-compose up -d コマンド実行後コンテナのステータスを確認。Restarting が実行され続けていた。。

[root@test244 redmine]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                   CREATED              STATUS                          PORTS     NAMES
0421de545baa   mariadb                "docker-entrypoint.s…"   About a minute ago   Restarting (1) 4 seconds ago              redmine-db-4.0.4
2f85c9221a56   redmine:4.0.4-alpine   "/docker-entrypoint.…"   About a minute ago   Restarting (1) 10 seconds ago             redmine-4.0.4
[root@test244 redmine]#

docker-compose logs コマンドでログを確認したところ以下のログを確認。

redmine-db-4.0.4  | 2023-10-10 01:54:38+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.1.2+maria~ubu2204 started.
redmine-db-4.0.4  | 2023-10-10 01:54:38+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config

上記のエラーログでググったところ以下の情報を確認。
2022年5月時点の docker 最新版で同様の事象が確認されていた。

https://stackoverflow.com/questions/72410663/error-starting-mariadb-on-docker-compose-build

情報によると image: mariadb でこの事象が発生するようで、対応としては image: mariadb:10.8.2 とすればとのこと。
そこで docker-compose.yml の redmine-db-4.0.4 側の image 設定を変更したところ正常に起動できた。