Zabbix 5.0用Agent + CentOS8 でネットワークディスカバリとローレベルディスカバリを試す
前回のインストールに続いて、入れただけで各ホストからデータを収集しなければ意味は無いので、サクッと別ホストにAgentをインストールしてデータを取得してみました。
今回のエージェント導入対象はCentOS8なので、Zabbixインストール時と同じくリポジトリを登録し、エージェントをインストールします。
デフォルトの状態では127.0.0.1
がアクセス許可ネットワークとして登録されているため、コンフィグを変更してからエージェントを起動します。
$ rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm $ dnf install -y zabbix-agent2 $ vi /etc/zabbix/zabbix_agentd2.conf > Server=x.x.x.x > ServerAction=x.x.x.x $ systemctl enable zabbix-agent2 $ systemctl start zabbix-agent2
手動登録もおつなもんですが、折角なのでディスカバリ機能を使って自動的に発見してもらいます。 デフォルトではローカル用のディスカバリルールが無効になっているので有効にチェックを入れて更新ボタンを押下します。 ※画像ではローカルのアドレス帯と監視間隔の時間をデフォルトから変更しています。
次に発見したホストをデータ収集ホストとして自動登録するアクションを有効にします。
設定>アクションのページに表示されるXXアクション
をクリックすると各種アクションへアクセスできます。
LinuxのAgentを発見した場合、自動登録するアクションがデフォルトで設定されているので、これを有効化します。
あとは適当な時間待つと自動登録されています。
ローレベルディスカバリに関してもLinux Agent用テンプレートに予め幾つか登録されているので、それらが動作しているか確認します。
例として、一番下のネットワークインタフェースの情報、トラフィック量等の情報を取得するプロトタイプが登録されており、そのデータを基にしたグラフのプロトタイプも登録されております。なので、このグラフが出来ているかを見てみます。
監視データ>ホストを見ると、自動的に登録されています。そのホストの右側を見るとグラフ 14
となっており、自動的にグラフも作成されているのが確認できます。
グラフ 14
をクリックしてみると次のように、自動的にデータを取得してグラフ作成までされています。
と、ここ数年クラウドと使ってもPrometheusだったのですが、Zabbixも負けずにちゃんと進化していてかなりいい感じですね。
Zabbix 5.0をCentOS8+MySQL8+nginxに入れてみた
Zabbix 5.0LTSが公開されたので早速、CentOS8 + MySQL8 + nginxの組み合わせでインストールしてみました。
が、公式のダウンロードページに行くと、OSやミドルウェアを選択するとインストール手順(ミドルウェアはインストール済み前提)がぱっと出る素敵仕様なので、全体の手順は割愛します。
なので、今回は自分的に必要だった部分を補足として記録しておきます。
1.MySQLのユーザ作成
公式の手順中、MySQLのユーザ作成がMySQL8だと実行不可能なコマンドに仕様変更しているので、以下の手順で作成します。
mysql> create user 'zabbix'@'localhost' identified by 'password'; mysql> grant all on zabbix.* to 'zabbix'@'localhost'; mysql> flush privileges;
2.nginxの待ち受け設定
nginxの設定ですが、公式には「/etc/nginx/conf.d/zabbix.conf
のコメント外して待ち受けポートとサーバ名を変えてね」と記載されています。OS新規インストールの場合、80のまま待ち受けるには/etc/nginx/nginx.conf
にデフォルト設定が入ったままだと思うので、そちらの設定を外すのを忘れないようにしましょう。そして、nginxの再起動を忘れずに。
3.GUIの日本語化
公式の手順では日本語が含まれておらず、Zabbixのユーザ設定から日本語を選択出来ないと思います。
その場合はzabbix-web-japanese.noarch
をインストールしてみましょう。
$ dnf install -y zabbix-web-japanese.noarch $ systemctrl restart zabbix-server
ビックリするほど簡単にインストール出来ましたね。
ただ、DBの文字コードがutf8mb4
ではなくutf8
なので公式の手順を見ずに実行する時は注意しましょう。
Docker CE インストール手順(2019/7時点)
公式のインストール手順を写経してみた結果になります。
Get Docker CE for CentOS | Docker Documentation
インストールするOSは「CentOS Linux release 7.6.1810」です。
まずは古いDocker関連のパッケージを削除します。
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
インストールする方法は3つあるようです。
・Yumリポジトリを使ったインストール
・RPMパッケージでインストール
・スクリプトを使ったインストール
今回はYumリポジトリを使う方法です。
先にutilをインストールしてからリポジトリをインストール。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
そのままDocker類をインストールして起動からHelloWorld。
sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo docker run hello-world
案内の文章が出て無事終了。特に問題なくサラッといきました。
フリーのFirewallをサクッと触った感想
どれも數十分〜数時間触った程度なので間違い・勘違いはあると思います。
CentOSとかで1から構築しても良かったけど、折角なのでGUIが良さげなのを試してみた。
触ってみたモノ。
・OPNSense
・ClearOS
・IPFire
OPNSense
・良いとこ
GUIが綺麗でわかりやすく、19.1では一部日本語化済み。
FW以外にも主要なネットワーク機能が使えるので、コレ一台でいろいろ出来て面白い。
各機能も細かく設定が出来て、たまに使うような機能もGUIから設定出来て○。
・うーんなとこ
HWの相性が厳しい。最近のPCへ入れて動かそうとするといろいろ動かない。特にNIC周りが認識するのに使えないというパターンが多くて困った。
ClearOS
・良いとこ
CentOSベースとのことでインストールの段階から、GUIが綺麗で日本語対応済み。
ホームエディションではメディアサーバとか使えるようだけど、ホームエディションは触ってないので以上。
・うーんなとこ
プロキシ等、単体の機能では設定可能な項目がかなり少ない。他の追加機能を入れることで対応出来たりするようだが、有料であったりと他と比べると煩雑感が。。。
IPFire
・良いとこ
OPNSenseと同等レベルの機能数と設定出来る項目の多さが○。
GUIの負荷もOPNSenseと比べるとかなり低いように見える。
LinuxベースということもありOPNSenseでは起きていたHW問題は一切発生しなかった。
・うーんなとこ
ゾーンの定義が決め打ち?っぽくて、WAN/LAN/DMZ/Wirelessの4つまでしか利用出来ない?
GUIのデザインがちょっと古め。
IPFireメモ:ネットワーク設定変更はCLIからsetupコマンドを実行すると変更可能。
とりあえずIPFireをもうちょっと使ってみよう。
AWS CloudwatchAgentを導入する際に躓いたこと
EC2インスタンスの詳細なメトリクス情報を取得するために、従来のスクリプトタイプのものからデーモンタイプのモノが出てきていたので試した。
OSはamzn2-ami-hvm-2.0.20181008-x86_64-gp2を利用。
- RunCommandでAgentをインストールするとtypes.dbが無いとエラーになる。
E! Error parsing /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml, open /usr/share/collectd/types.db: no such file or directory
これはちゃんとした解決策かどうか不明だけど、ファイルを作ることで回避できた。
mkdir /usr/share/collectd touch /usr/share/collectd/types.db
- RunCommandでパラメータストアの設定を指定するも読み込まれない。
これはドキュメントの確認不足でした。名前が「AmazonCloudWatch-」で始まるモノしか読まないようで変更することで何事もなく読み込まれた。
キーボードのスイッチまとめ
キーボードのスイッチを一覧でまとめた物が見当たらなかったので、自分用にメモ。
原則Cherry MX互換系を記載。荷重は情報元をベースに書いてるので、他所で見る値とは違うケースが多いかと。
情報元
The Comparative Guide to Mechanical Switches - Input Club
※ 表の意味
TPF - Tactile Peak Force - クリック感を感じるピーク時の荷重
AF - Actuation Force - キー反応時の荷重
BoF - Bottom-Out Force - キーを押し切った時の荷重
Lambda + GolangでEC2インスタンス起動時にRoute53へレコード登録する
ありそうでそれっぽいものがなかったので、なら作ろう、ということで勉強中のGolangを使い、こちらの記事を参考にGolangでEC2インスタンスが起動したらRoute53へレコード登録するモノを作ったので、その際にハマったポイントをメモ。
CloudWatch eventsを使ってEC2起動時にTagチェックをし必須TagがなければTerminateするLambdaサンプル - Qiita
最重要事項:ドキュメントをよく読む。
Lambda 関数ハンドラ (Go) - AWS Lambda
今回はCloudWatchEventを使ってLambdaをキックするだけ。流れは、
- CloudWatchEventでキックされたLambdaは例にしたがってlambda.startする
- lambda.startで指定したハンドラの第2引数はgithub.com/aws/aws-lambda-go/eventsのCloudWatchEvent
- CloudWatchEventからインスタンスの情報を取得
- 3で取得した情報を基にRoute53へレコード登録
と簡単なモノ。既にレコードがある場合はエラーになります。更新とか出来るけど、意図せず変わってしまうのも危険なので割り切って新規登録だけに。
真っ先に参考にさせてもらったサイト。
AWS LambdaにGoサポートが入ったので使ってみた | ブログ :: Web notes.log
流れの2では第2引数でCloudWatchEventが取れるということすらわからず1、2時間さまよった結果どこかで見たのだけど、メモするのを忘れた。。。
func Handler(ctx context.Context, event events.CloudWatchEvent) () {
...
}
とりあえず色々なイベントがあらかじめ定義されていて引数に取れるようです。参考サイトの情報から、もしかしたら、という予想でやってみたらうまく行った、という流れの可能性もあったかもしれないけど、どこか参考ページと思われるところがあれば紹介してもらえると助かります。
流れの3ではこちらの記事を参考にインスタンスの情報を取ることに成功。
AWS SDK for Go でEC2インスタンス情報取得 - Qiita
コピペしただけでは意味がないのでドキュメントも読み、理解を深める。ただ、2でインスタンスのIDが取れているので、全インスタンスの情報を取得するのはよろしくない、ということでインスタンスIDを基に情報を取得した。(絞り込み出来てるはず・・・
ec2 - Amazon Web Services - Go SDK
流れの4はひたすらドキュメントを読み解き、最終的にドキュメントにサンプルコードがあり、それを参考にすることでレコード登録が出来た。
route53 - Amazon Web Services - Go SDK
Readmeとか英語にしないと!と思ったけど意味通じなくなるので、開き直って日本語で書きました。