現在、Ubuntu 18.04 LTSの上でZabbix 4.0 LTSが稼働している。
これを、Zabbix 6.0にアップグレードしつつ、Dockerのコンテナで稼働させたい。
稼働中のシステムをバージョン4.0のままDockerに移設し、その後、6.0にアップグレードするやり方でうまくいった。
ZabbixをDockerに移設
オフィシャルのドッカープロジェクトはこちら。
GitHub / zabbix / zabbix-docker
稼働中のシステム環境は以下の通りで、これをUbuntu 22.04で動作するDockerに移設する。
稼働中のシステム | パッケージとバージョン |
---|---|
OS | Ubuntu 18.04 LTS |
Zabbix | zabbix-server-mysql 4.0.44-1+bionic |
Database | mariadb-server 10.1.48-0ubuntu all |
Web server | apache2 2.4.29-1ubuntu4.2 |
Zabbix4.0のインストール
プロジェクトをクローンして、バージョン4のブランチに変更。
$ git clone https://github.com/zabbix/zabbix-docker.git $ cd zabbix-docker $ git checkout 4.0
これをベースに作成したdocker-compose.yml、および、必要なファイルをだけをこちらで公開。
https://gitea.rohhie.net/rohhie/Zabbix-with-docker/src/branch/4.0
docker-compose.yml
yamlファイルが幾つも用意されていて、内容についてはこちらで教えてくれている。
Zabbix manual / 5 Installation from containers
ベースとしてAlpineでmysqlのものを選択した。
$ cp docker-compose_v3_alpine_mysql_latest.yaml docker-compose.yml
システムは色々な組み合わせがあり得る、とのことでyamlには色々なコンテナが起動する仕掛けが入っている。
そして、profilesという設定項目があり、起動時にプロファイルを指定すると関係するコンテナだけが起動するようだ。
サービス | プロファイル | 現在稼働している機能 |
---|---|---|
zabbix-server | 指定なし | yes |
zabbix-proxy-sqlite3 | all | no |
zabbix-proxy-mysql | all | no |
zabbix-web-apache-mysql | all | yes |
zabbix-web-nginx-mysql | 指定なし | no |
zabbix-agent | all, full | yes |
zabbix-java-gateway | all, full | no |
zabbix-snmptraps | all, full | no |
mysql-server → zabbix-mysql に名称変更 | 指定なし | yes |
db_data_mysql | 指定なし | no |
elasticsearch | コメント化されている | no |
今回起動したいコンテナは4つで、これにぴったりくるプロファイルはない。
起動時にプロファイルを指定するのも日頃やらないことなので、この4つだけを定義したdocker-compose.ymlを作成することにした。
docker-compose.yml
version: '3.5' services: zabbix-server: … ※Gitea参照(かなり長いので)
その他、
- コンテナ
- 自動起動させたいので、restart: "unless-stopped" を追加。
- 名前が長いので、container_nameで識別できる程度のものを設定。
- CPUに制限が掛かっていたが、ホストにはコアを1つしか割り当てていないので、全開に。
- ネットワーク
- subnetが指定されているので、他のネットワークと重ならないようにしておく。
- ネットワークの名前が長いので、nameで識別できる程度のものを設定。
- データーベース
- MySQLが使われているが、MariaDBが使いたい。
- サービス名が mysql-server となっているが、他とあわせて zabbix- から始まる名前にしたい。
等、いくつか好みによる見直しを入れた。
MySQLのユーザー・パスワード
MySQLのユーザー・パスワードは環境変数で指定することができ、環境変数はenv_vars配下にファイルで保管されていた。
それぞれに適切な値を設定しておく。
ファイル | 設定内容 | 備考 |
---|---|---|
.MYSQL_ROOT_USER | ルートユーザー | |
.MYSQL_ROOT_PASSWORD | ↑のパスワード | |
.MYSQL_USER | Zabbixのデーターを取り扱うユーザー | データーのバックアップやインポートで使うユーザー |
.MYSQL_PASSWORD | ↑のパスワード |
元々の環境に合わせて、起動するコンテナを4つに絞り込んで起動したい。
タイムゾーン
時間はすべてUTCで管理されているのだけれど、情報を表示する時にはJSTにしておきたい。
ZABBIX FORUMS / How do I change timezone on Zabbix server running in Docker?
env_vars/.env_web
PHP_TZ=Asia/Tokyo
これで、Webインターフェースで表示される時間が日本時間になる。
グラフのフォント変更
グラフの日本語が豆腐になってしまうので、フォントを導入。
現在稼働中の環境にはM+をインストールしていたので、同じものを使うとして…
$ apt download fonts-mplus $ dpkg-deb -x fonts-mplus_063-3_all.deb fonts/
以前から使っているフォントは
fonts/usr/share/fonts/truetype/mplus/mplus-2p-regular.ttf
なので、これをvolume指定で
/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
と置き換えてしまう。
docker-compose.yml
zabbix-web-apache-mysql:
…
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/etc/ssl/apache2:/etc/ssl/apache2:ro
- ./fonts/usr/share/fonts/truetype/mplus/mplus-2p-regular.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro
…
これで、グラフに日本語が表示される。
ログスパム対策
このログメッセージが、だいたい10秒ごとに出力されている。
/var/log/syslog
Nov 19 18:15:20 hoge systemd[1]: run-docker-runtime\x2drunc-moby-a8b3bf390f760d0409f48118a8a9008978052ba19df8dac6b68647d25a530548-runc.ie0Pnf.mount: Deactivated successfully.
探してみると、こんな情報が見つかった。
Github / docker / for-linux / systemd logs filled with mount unit entries if healtcheck is enabled #679
systemdとdockerの相性的な問題に見えるけれど、試しにヘルスチェックを止めてみた。
docker-compose.yml
… zabbix-web-apache-mysql: … # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:8080/"] # interval: 10s # timeout: 5s # retries: 3 # start_period: 30s …
これで、ヘルスチェックに関わるsystemdのログメッセージは出力されなくなる。
コンテナの起動
docker-compose.ymlと環境変数の設定が終わったら、コンテナを起動する。
$ sudo docker compose up --build ■プロファイルを指定している場合 $ sudo docker compose --profile homelab up --build
コンテナの初期設定が終わったら、http://<アクセス用URL or IPアドレス>:8081にアクセスしてみる。
Username: Admin
Password: zabbix
でサインイン。Usernameは大文字・小文字を区別するので注意。
初期設定ができた。
稼働中のシステムからデーターをエクスポート
現在稼働中の環境からデーターベースを取り出してきて、それを新環境に取り込めばだいたいOKっぽい。
どのようなデーターベース設定をしていたかというと…
/etc/zabbix/web/zabbix.conf.php
$ cat /etc/zabbix/web/zabbix.conf.php <?php // Zabbix GUI configuration file. global $DB; $DB['TYPE'] = 'MYSQL'; $DB['SERVER'] = 'localhost'; $DB['PORT'] = '0'; $DB['DATABASE'] = 'zabbix'; $DB['USER'] = 'zabbix'; $DB['PASSWORD'] = 'zabbix'; …
といった感じなので、この情報を使ってダンプを出力。
$ mysqldump --single-transaction --routines -u zabbix -p zabbix > zabbix.dmp
Enter password: <パスワードを入力>
以上の手順でエクスポートしたzabbix.dmpを、新しい環境にコピーする。
データーのインポートと調整
新しい環境でzabbix.dmpをインポートし、確実に動くように必要な変更を入れていく。
データーをインポート
一旦、すべてのコンテナを停止。
$ sudo docker compose stop
MySQLサーバーだけを起動。
$ sudo docker compose up mysql-server -d
ダンプしたバックアップを投入。
$ sudo docker cp zabbix.dmp zabbix-mysql:/ $ sudo docker exec -it zabbix-mysql bash --login
# mysql -u zabbix -p zabbix < zabbix.dmp
Enter password: <env_vars/.MYSQL_PASSWORDで指定したパスワードを入力>
# rm /zabbix.dmp
# exit
コンテナを起動。
$ sudo docker compose up -d
※これで、zabbix-mysql以外のコンテナが起動する。
LDAP認証
本番環境でLDAP認証を設定しており、そのサーバーは「オレオレ認証局が署名したサーバー証明書」で通信を暗号化している。
そのため、Webサーバーを動かすコンテナにオレオレ認証局のCA証明書を登録しておく必要がある。
登録していない場合、正しいユーザーパスワードを指定しても、
Cannot bind to LDAP server
というメッセージが表示される。
さて、このCA証明書だけれども、コンテナを作り直す度に手で登録するのは面倒なので、DockerfileでCA証明書を放り込んで有効化させることにした。
Dockerfile-apache ※新規作成
FROM zabbix/zabbix-web-apache-mysql:alpine-4.0-latest USER root ADD ca.crt /usr/local/share/ca-certificates RUN update-ca-certificates USER zabbix
ローカルにオレオレ認証局の証明書を用意。ファイル名は
ca.crt
とした。
そして、コンテナの作り方を変える。
docker-compose.yml
zabbix-web-apache-mysql: #image: zabbix/zabbix-web-apache-mysql:alpine-4.0-latest build: context: ./ dockerfile: Dockerfile-apache image: custom/zabbix-web-apache-mysql-4 …
これで、コンテナを作る前に証明書を登録してくれる。
$ sudo docker compose up --build
ESXiの監視
ESXiでサーバーを動かしているのだけれど、そのESXiを監視したい。
過去にやった設定をそのまま入れればいけそうだ。
./env_vars/.env_srv
… ZBX_STARTVMWARECOLLECTORS=2 ZBX_VMWAREFREQUENCY=60 ZBX_VMWAREPERFFREQUENCY=60 ZBX_VMWARECACHESIZE=8M ZBX_VMWARETIMEOUT=10 …
ホストZabbix serverで軽度の障害
Zabbix serverで軽度の障害が発生する。
Zabbix agent on Zabbix server is unreachable for 5 minutes
Zabbix server上のagentにアクセスできない、といっている。
コンテナが分かれているので仕方がない。
Github / zabbix / zabbix-docker / Getting Zabbix agent on Zabbix server is unreachable for 5 minutes error #409
設定 → ホスト → Zabbix server と進み、エージェントのインターフェースのところで
DNS名に zabbix-agent
接続方法を DNS
に設定して、更新ボタンをクリックする。
念のため、zabbix-serverコンテナの中で、zabbix-agentで名前解決できるか確認してみたが、大丈夫だった。
$ sudo docker exec zabbix-server ping -c 1 zabbix-agent PING zabbix-agent (172.18.239.2) 56(84) bytes of data. 64 bytes from zabbix-agent.zbx_back (172.18.239.2): icmp_seq=1 ttl=64 time=0.149 ms --- zabbix-agent ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.149/0.149/0.149/0.000 ms
設定後、程なく軽度の障害は解消された。
各サーバーの設定変更
監視される側の各サーバーが、ファイアウォールで通信を遮断したり、エージェントがサーバーを限定したりと、監視ができない状態だった。
すべての設定を見直し、きちんと監視ができるようになったところまで確認した。
これで調整は完了。このまま使い続けていっても良いけれど、6.0へのバージョンアップをしていこう。
Zabbixをアップグレード
4.0から6.0へのアップグレードは可能なようだ。
Zabbix マニュアル / 7 アップグレード手順
現行システムのバージョンは4.0.44-1+bionic。
ここから直接取り出したデーターを6.0にインポートして起動してみたけれど、データーベースのアップグレードに失敗した。
そのため、現行システム → zabbix-docker(4.0) → zabbix-docker(6.0) で起動してみたところ、アップグレードできた。
具体的には、zabbix-docker(4.0)で作り込まれた zbx_envディレクトリを残しておいて、zabbix-docker(6.0)に切り替えて起動した。
まず、コンテナとボリュームを削除。
$ sudo docker compose down --volume
※データーベースは zbx_env/var/lib/mysql に入っているので、削除されずに残っている。
ブランチを4.0から6.0に切り替える。
$ git checkout 6.0
4.0で実施したのと同じような変更を入れる。
https://gitea.rohhie.net/rohhie/Zabbix-with-docker/src/branch/6.0
コンテナを起動してみる。
$ sudo docker compose up --build
※アップグレード処理が見たいのでコンテナにアタッチする。終わったら[Ctrl]+[4]でデタッチ。
アップグレード処理が走る…
アップグレードが終わったらブラウザでアクセスし、ログインして動作していることを確認する。
6.0で動作し始めた。
Webサーバーの設定
zabbix-serverが動き出したので、Webサーバーを設定していく。
SSLでサブディレクトリなアクセス
Zabbixを稼働させているサーバーでは、いくつかのサービスを同居させる予定。
Webサーバーのコンテナも起動させているので、さらにApacheをさらにその上に載せるのはもったいないような気もするが、それぞれに細かな設定もあるので割り切って使う。
Apacheのインストール。
$ sudo apt install apache2
雑だけれども、こんな設定を作り…
/etc/apache2/sites-available/service.conf
<VirtualHost *:443> DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/service_error.log CustomLog ${APACHE_LOG_DIR}/service_access.log combined SSLEngine on SSLCertificateFile /etc/ssl/private/service.crt SSLCertificateKeyFile /etc/ssl/private/servuce.key SSLProxyEngine on ProxyPreserveHost On ProxyPass /zabbix/ http://localhost:8081/ ProxyPassReverse /zabbix/ http://localhost:8081/ </VirtualHost>
※サブディレクトリでzabbixにアクセスするようにしている。
デフォルトのページを無効化し、作った設定を有効化。
必要なモジュールを有効にして、余計な警告が出るのを止める。
$ sudo a2dissite 000-default.conf $ sudo a2ensite service.conf $ sudo a2enmod ssl proxy proxy_http $ echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf $ sudo a2enconf fqdn
サービスを再起動して設定を反映させる。
$ sudo systemctl restart apache2
これで、
https://hogeserver.hogeddns.jp/zabbix/
というサブディレクトリなURLでアクセスできるようになった(最後の / まで入力が必要)。
ポートを塞ぐ
Apacheでプロキシーサーバーも実装したので、開いている8081と8443を塞いでしまおう。
/opt/docker-user-rules.sh
#!/bin/bash # zabbix iptables $1 DOCKER-USER -i ens160 -p tcp -m multiport --dports 8080,8443 -j DROP
※8081を空けているのだけれど、コンテナの側のポート8080を指定しないとうまく閉じられない。
サーバーを再起動した時にもルールが適用されるように、dockerサービスの開始・終了時にこのルールを追加・削除するように仕掛けておく。
$ sudo systemctl edit docker
### Editing /etc/systemd/system/docker.service.d/override.conf ### Anything between here and the comment below will become the new contents of the file [Service] ExecStartPost=/opt/docker-user-rules.sh -I ExecStop=/opt/docker-user-rules.sh -D ### Lines below this comment will be discarded …
dockerサービスを再起動して、ルールが追加されるか確認してみる。
$ sudo systemctl stop docker
$ sudo iptables --list-rules --table filter | grep DOCKER-USER
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A DOCKER-USER -j RETURN
$ sudo systemctl start docker
$ sudo iptables --list-rules --table filter | grep DOCKER-USER
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A DOCKER-USER -i ens160 -p tcp -m multiport --dports 8080,8443 -j DROP
-A DOCKER-USER -j RETURN
ポートが開いていないか、確認してみる。
$ ip a show dev ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:83:26:b9 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.110.10/24 brd 192.168.110.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fdaa:aaaa:aaaa:aaaa::10/64 scope global valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe83:26b9/64 scope link valid_lft forever preferred_lft forever $ curl -m 3 --interface 192.168.110.10 https://<URL or IPアドレス>:8081 $ curl -m 3 --interface 192.168.110.10 https://<URL or IPアドレス>:8443 → 先程追加した設定でドロップするので、タイムアウトする。 $ curl -m 3 --interface fdaa:aaaa:aaaa:aaaa::10 http://<URL or IPアドレス>:8081 $ curl -m 3 --interface fdaa:aaaa:aaaa:aaaa::10 https://<URL or IPアドレス>:8443 → IPv6の設定は元々追加されておらず、UFWがブロックしてタイムアウトする。 $ curl -m 3 --interface 192.168.110.10 https://<URL or IPアドレス>:443 → すぐに応答がある。
やったこと
MariaDBを使いたい
MySQLで動作するところまで確認したあと、一旦すべてを消してMariaDBに置き換えてみた。
起動したら、最初にエラーが発生した。
zabbix-server | ERROR 1118 (42000) at line 1278: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
innodb_strict_modeをオフにすれば良いとのこと。
いつか、そのとき、あの場所で。rev.2 / [自分用メモ]MariaDB使用時に”InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.”になる
docker-compose.yml
zabbix-mysql:
command:
- mysqld
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_bin
- --skip-character-set-client-handshake
- --default-authentication-plugin=mysql_native_password
- --innodb_strict_mode=OFF
これで動作させることができた。
なお、現時点(2022/11/23)では、MariaDBは10.8までがサポート対象となっていた。
10.10を試してみたところ、起動するのに環境変数の設定が必要で、かつ、起動できても常に警告が出ていたので、10.8を使用することにした。
ホストのMariaDBを使ってみる
グラフの表示に時間が掛かる。そして、やたらとCPUを使用している。
この件で情報を探してみたところ、データーベースが遅いんじゃないか?と心配になった。
現在、Ubuntu 18.04+MariaDB+Zabbix4が快調に動いているので、ホストにインストールしたMariaDBなら早いのか?と思い、試してみた。
$ sudo apt install mariadb-server
環境変数でサーバーのホストを変更しておく。
env_vars/.env_db_mysql
DB_SERVER_HOST=party.hogeserver.hogeddns.jp
docker-compose.ymlからmysqlに関わる設定を削除して起動。
でも、これだけだとうまく動かない。
コンテナに入って確認してみると、データーベースに接続できないことが分かった。
# mysql -h party.hogeserver.hogeddns.jp ERROR 2002 (HY000): Can't connect to MySQL server on 'party.hogeserver.hogeddns.jp' (115)
MariaDBがlocalhostでバインドしていたので、0.0.0.0とバインドさせる。
/etc/mysql/mariadb.conf.d/50-server.cnf
#bind-address = 127.0.0.1 bind-address = 0.0.0.0
設定を反映。
$ sudo systemctl restart mariadb
これでMariaDBに接続をトライすることはできたが、コンテナからの接続が許可されていなかった。
# mysql -h party.hogeserver.hogeddns.jp ERROR 1130 (HY000): Host '172.18.238.2' is not allowed to connect to this MariaDB server
アクセスできるユーザーを作ってみる。
MariaDB [(none)]> grant all privileges on *.* to root@'172.18.238.2' identified by 'root_pwd' with grant option; Query OK, 0 rows affected (0.001 sec)
ここでコンテナが突然落ちた。
再度起動してみたが、こんなエラーが発生して起動できない。
zabbix-server | 7:20221123:084105.648 cannot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?)
ユーザーとデーターベースを作っておくか…。
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; ERROR 1007 (HY000): Can't create database 'zabbix'; database exists MariaDB [(none)]> select user, host from mysql.user; +-------------+--------------+ | User | Host | +-------------+--------------+ | zabbix | % | | root | 172.18.238.2 | | mariadb.sys | localhost | | mysql | localhost | | root | localhost | +-------------+--------------+ 5 rows in set (0.001 sec)
いや、作られているぞ。面倒だから、データーベースをインポートしてみる。
$ mysql -u zabbix -p zabbix < zabbix.dmp Enter password: ERROR 1118 (42000) at line 6560288: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
あ…そうか、だから初回起動時からエラーが頻発していたのか。
innodb_strict_mode=0を設定していれば、インポートせずとも起動はしそうだ(試してないけれど)。
Qiita / Zabbixサーバ データベースデータインポートエラーについて(MariaDB10.2)
/etc/mysql/mariadb.conf.d/50-server.cnf
[mariadb-10.6] innodb_strict_mode=0
※1行追記。
設定反映。
$ sudo systemctl restart mariadb
これで動いた。
肝心の処理速度は…というと、色々とアクセスしてみたものの、特に変化はなかった。これは原因ではなさそうだった。
起きたこと
active check で host not found
コンテナを起動してみたところ、定期的にこんなエラーが表示されている。
zabbix-server | 210:20221119:191810.074 cannot send list of active checks to "172.18.239.2": host [f88d305dbbe4] not found zabbix-agent | 39045:20221119:191810.078 no active checks on server [zabbix-server:10051]: host [f88d305dbbe4] not found
コンテナが作り直されると a138c5bf2112 の部分の表示が変わる。
どちらのコンテナがこれなのか。
$ sudo docker inspect zabbix-server | grep \"Hostname\" "Hostname": "5ef94eacfce0", $ sudo docker inspect zabbix-agent | grep \"Hostname\" "Hostname": "f88d305dbbe4",
zabbix-agentの方か。
で、これが見つからない?どれどれ…
serverは名前解決できるな。
$ sudo docker exec zabbix-server ping -c 1 f88d305dbbe4 PING f88d305dbbe4 (172.18.239.2) 56(84) bytes of data. 64 bytes from zabbix-agent.zbx_back (172.18.239.2): icmp_seq=1 ttl=64 time=0.097 ms --- f88d305dbbe4 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.097/0.097/0.097/0.000 ms
agentも名前解決できる。
$ sudo docker exec zabbix-agent ping -c 1 f88d305dbbe4 PING f88d305dbbe4 (172.18.239.2) 56(84) bytes of data. 64 bytes from f88d305dbbe4 (172.18.239.2): icmp_seq=1 ttl=64 time=0.079 ms --- f88d305dbbe4 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.079/0.079/0.079/0.000 ms
はて。
色々と調べてみると、アクティブチェックを使う場合、ディスカバリが…的な話が見つかった。
現時点では、サーバー側で監視対象サーバー・項目を決めて運用しているので、今の時点ではあまり関係なさそうということで、気にしないことにした。
それにしても…なんとなく遅い
なんとなく遅いな、と思いMySQLからMariaDBに変更して少し早くなったけれど、現行システムと比較するとかなり遅い。
原因は他にありそうだなと考えて、改めてdocker-compose.ymlを見直してみると、リソース制限されていることに気付いた。
docker-compose.yml
deploy: resources: limits: #cpus: '0.70' memory: 1G reservations: #cpus: '0.5' memory: 512M
※何カ所かにこの表記があるので、コメント化してみた。
全開とは言えないけれど、これで、だいぶ表示は速くなった。
さいごに
Zabbixのアップグレードは大変だと聞かされていたので、そう思い込んでいたけれど、実際には動くように動くようにいろいろとやってくれる感じで、比較的簡単に思えた。
Dockerに移行してみて思ったことは、
- ダッシュボードを書くことそのものに時間が掛かるなー。
- ダッシュボードを表示していると、結構CPUを消費するなー。(どうでも良いようなグラフをいっぱい書いている)
ということだった。Webインターフェースが遅い、という感じ。
アクセスするのは1人だし、監視しているものもそんなに多くないから、今くらいなら問題はないけれど、大規模な監視だったらどうなるんだろう?
このテーマを頭の片隅に置きつつ、とりあえずこのまま運用をして様子を見ていく。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他