二度忘れた事を三度忘れないようにする

しがないフリーランスIT系エンジニア

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

手動登録もおつなもんですが、折角なのでディスカバリ機能を使って自動的に発見してもらいます。 デフォルトではローカル用のディスカバリルールが無効になっているので有効にチェックを入れて更新ボタンを押下します。 f:id:knhko:20200514191505p:plain ※画像ではローカルのアドレス帯と監視間隔の時間をデフォルトから変更しています。

次に発見したホストをデータ収集ホストとして自動登録するアクションを有効にします。
設定>アクションのページに表示されるXXアクションをクリックすると各種アクションへアクセスできます。
f:id:knhko:20200514204531p:plain

LinuxのAgentを発見した場合、自動登録するアクションがデフォルトで設定されているので、これを有効化します。
あとは適当な時間待つと自動登録されています。

ローレベルディスカバリに関してもLinux Agent用テンプレートに予め幾つか登録されているので、それらが動作しているか確認します。
f:id:knhko:20200515155317p:plain

例として、一番下のネットワークインタフェースの情報、トラフィック量等の情報を取得するプロトタイプが登録されており、そのデータを基にしたグラフのプロトタイプも登録されております。なので、このグラフが出来ているかを見てみます。

f:id:knhko:20200515155748p:plain 監視データ>ホストを見ると、自動的に登録されています。そのホストの右側を見るとグラフ 14となっており、自動的にグラフも作成されているのが確認できます。

グラフ 14をクリックしてみると次のように、自動的にデータを取得してグラフ作成までされています。 f:id:knhko:20200515160027p:plain

と、ここ数年クラウドと使っても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を利用。

  1. 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
  1. RunCommandでパラメータストアの設定を指定するも読み込まれない。
    これはドキュメントの確認不足でした。名前が「AmazonCloudWatch-」で始まるモノしか読まないようで変更することで何事もなく読み込まれた。

キーボードのスイッチまとめ

キーボードのスイッチを一覧でまとめた物が見当たらなかったので、自分用にメモ。
原則Cherry MX互換系を記載。荷重は情報元をベースに書いてるので、他所で見る値とは違うケースが多いかと。

情報元

The Comparative Guide to Mechanical Switches - Input Club

Mechanical Key Switches



※ 表の意味
TPF - Tactile Peak Force - クリック感を感じるピーク時の荷重
AF - Actuation Force - キー反応時の荷重
BoF - Bottom-Out Force - キーを押し切った時の荷重

 

メーカ コミュニティ タイプ TPF AF BoF
Cherry - クリック 65g 55g 60g
Cherry - クリック 80g 53g 82g
Cherry - クリック 70g 60g 82g
Cherry - タクタイル 45g 38g 55g
Cherry - クリア タクタイル 65g 51g 85g
Cherry - タクタイル 84g 67g 110g
Cherry - リニア - 37g 54g
Cherry - リニア - 55g 75g
Cherry - リニア - 78g 110g
Gateron - クリック 58g 43g 62g
Gateron - クリック 80g 65g 90g
Gateron - タクタイル 48g 37g 52g
Gateron Zealio タクタイル 55g 33g 60g
Gateron - クリア リニア - 27g 40g
Gateron - リニア - 43g 55g
Gateron - リニア - 50g ?
Gateron - リニア - 50g ?
Greetech - クリック 60g 50g 55g
Greetech - タクタイル 60g 39g 55g
Greetech - リニア - 42g 55g
Greetech - リニア - 56g 78g
Kaihua - クリック 53g 31g 50g
Kaihua - クリック 42g 40g 55g
Kaihua - クリック 55g 50g 60g
Kaihua - 箱白 クリック ? 50g ?
Kaihua - スピードゴールド クリック ? 60g ?
Kaihua - スピードプロライトグリーン クリック ? 50g ?
Kaihua NovelKeys x Kaihua クリック 66g 30g 49g
Kaihua NovelKeys x Kaihua パールブルー クリック 57g 42g 65g
Kaihua NovelKeys x Kaihua ネイビー クリック 77g 40g 67g
Kaihua InputClub HakoViolet(バイオレット) タクタイル 39g 28g 50g
Kaihua InputClub HakoTrueピンク) タクタイル 58g 58g 94g
Kaihua InputClub HakoClear(クリア) タクタイル 63g 54g 79g
Kaihua InputClub HaloTrue(サーモン) タクタイル 60g 54g 100g
Kaihua InputClub HaloClear(クリア) タクタイル 65g 52g 78g
Kaihua - タクタイル 50g 42g 60g
Kaihua - タクタイル 45g 29g 65g
Kaihua - 箱茶 タクタイル ? 50g ?
Kaihua - スピードカッパー タクタイル ? 50g ?
Kaihua - スピードプロパープル タクタイル ? 50g ?
Kaihua NovelKeys x Kaihua ロイヤル(紫) タクタイル 65g 29g 55g
Kaihua NovelKeys x Kaihua タクタイル 59g 46g 70g
Kaihua - リニア - 28g 53g
Kaihua - 箱赤 リニア - 37g 55g
Kaihua - スピードシルバー リニア - 40g ?
Kaihua - リニア - 50g 65g
Kaihua - スピードプロブルゴーニュ リニア - 50g ?
Kaihua NovelKeys x Kaihua リニア - 57g 82g
Kaihua - リニア - 60g ?
Kaihua - 箱黒 リニア - 60g ?
Kaihua - スピードブロンズ リニア - 60g ?
MOD - H(橙) タクタイル ? 62g 78g
MOD - L(マゼンタ) タクタイル ? 45g 62g
MOD - M(シアン) タクタイル ? 55g 68g
MOD - SH(緑) タクタイル ? 70g ?
MOD - L(マゼンタ) リニア - 45g ?
MOD - M(シアン) リニア - 55g ?
MOD - H(橙) リニア - 62g 80g
Outemu - クリック 63g 47g 60g
Outemu - タクタイル 54g 40g 60g
Outemu - リニア - 47g 61g
Outemu - リニア - 66g 84g

Lambda + GolangでEC2インスタンス起動時にRoute53へレコード登録する

github.com

ありそうでそれっぽいものがなかったので、なら作ろう、ということで勉強中のGolangを使い、こちらの記事を参考にGolangでEC2インスタンスが起動したらRoute53へレコード登録するモノを作ったので、その際にハマったポイントをメモ。

CloudWatch eventsを使ってEC2起動時にTagチェックをし必須TagがなければTerminateするLambdaサンプル - Qiita

最重要事項:ドキュメントをよく読む。

Lambda 関数ハンドラ (Go) - AWS Lambda

今回はCloudWatchEventを使ってLambdaをキックするだけ。流れは、

  1. CloudWatchEventでキックされたLambdaは例にしたがってlambda.startする
  2. lambda.startで指定したハンドラの第2引数はgithub.com/aws/aws-lambda-go/eventsのCloudWatchEvent
  3. CloudWatchEventからインスタンスの情報を取得
  4. 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とか英語にしないと!と思ったけど意味通じなくなるので、開き直って日本語で書きました。