kso512.checkmk_agent

checkmk_agent

Ansibleの役割で、CheckMK RAWエディション用のエージェント/クライアントをインストールします。

これは、CI/CDやAnsible GalaxyとCheckMKの命名規則の変更に伴って、私が長年作成・維持していたinstall-check_mk-agent役割の完全な再構築です。

すべてのタスクにはcheckmk-agentというタグが付けられています。

以下のディストリビューションは自動的にテストされました:

パフォーマンスの理由から、Windowsエージェントでは以下の「セクション」がデフォルトで無効になっています:

  • services
  • msexch
  • dotnet_clrmemory
  • wmi_webservices
  • wmi_cpuload
  • ps
  • fileinfo
  • logwatch
  • openhardwaremonitor

さらに、プラグインの実行が調整されました:

  • タイムアウトが30から120に引き上げられました
  • 非同期が有効になりました
  • キャッシュ年齢が3600(1時間)に設定されました

自分自身の「check_mk.user.yml.j2」を作成し、checkmk_agent_win_config_srcを上書きしてさらにカスタマイズするか、checkmk_agent_win_config_optimize変数をfalseに設定してこの最適化を無効にします。

同様の変更がdocker.cfgのデフォルトファイルにも行われています。ここでは、すべてのdockerセクションが有効になっており、checkmk_agent_docker_complete変数をfalseに設定することでデフォルトに戻すことができます。

最近のバージョンマトリックス

CheckMK RAWエディションバージョン 役割のバージョン/タグ
2.3.0p13 1.1.1
2.3.0p12 1.1.0
2.3.0p11 1.0.99
2.3.0p10 1.0.98
2.3.0p9 1.0.97

要件

この役割には他の役割は必要ありません。一般的にCheckMKサーバーと互換性があるように設計されており、特にkso512.checkmk_serverに特化しています。

Windowsリモート管理(WinRM)を使用してWindowsホストに接続する場合、Ansibleシステムにpywinrmパッケージをインストールする必要があります:

pip install "pywinrm>=0.3.0"

この役割は、Unixタイプのシステムでデフォルトポート6556の代わりにSSHを使用します。これにより通信が暗号化され、新しいポートを開かずに監視と新しいサービスの設定が行えます。

SSHの認証キーを作成するには、こちらに示されているように「ssh-keygen」プログラムを使用します。

ローカルフォルダーにパスフレーズなしでデフォルトのキーを作成する例:

ssh-keygen -C "cmkagent@$HOSTNAME" -f ./id_rsa -N "" -v

これにより、id_rsaid_rsa.pubの2つのファイルが作成されます。

id_rsa = プライベートキーで、安全に保管する必要があります。このファイルは、アクティブなCheckMKエージェントユーザーの~/.sshフォルダーに置く必要があります。次の例は「kso512.checkmk_server」のデフォルトユーザーとサイトを使用しています:

cp ./id_rsa /opt/omd/sites/test/.ssh

id_rsa.pub = 公開キーで、他の信頼されたホストと共有できます。このファイルは、ローカルの「authorized_keys.j2」ファイルに追加する必要があります。デフォルトの役割構造を仮定して:

echo '# {{ ansible_managed }}' > /etc/ansible/local/authorized_keys.j2
cat ./id_rsa.pub >> /etc/ansible/local/authorized_keys.j2

次に、local/authorized_keys.j2を自分の変数でcheckmk_agent_authkey_srcとして宣言します。以下に例を示します。

最後に、CheckMK自体を設定して、これらのファイルを利用し、TCPポート6556への接続を試みないようにします:

  • CheckMKにログインします
  • 設定 > 検索 > "個別" > エージェントアクセスの代わりに個別プログラム呼び出し
  • フォルダーにルールを作成する:メインディレクトリ
    • 説明:SSHおよびcmkagentアカウントを使用してSSHキーを使う
    • 実行するコマンドライン:ssh -i ~/.ssh/id_rsa -l cmkagent <IP> sudo /home/cmkagent/check_mk_agent
    • 明示的ホスト:(テストホストを選択し、それが機能したらホストタグまたはラベルを設定します)
    • 保存
  • 1つの変更 > 選択したサイトで有効化

役割変数

これらのいくつかは冗長に見えるかもしれませんが、将来のユーザーが必要に応じてローカル変数で上書きできるように指定されています。

変数の表(デフォルト付き)

変数 説明 デフォルト
checkmk_agent_authkey_dest "authorized_keys"ファイルのフルパス "{{ checkmk_agent_ssh_path }}/authorized_keys"
checkmk_agent_authkey_group "authorized_keys"ファイルの所有グループ名 "{{ checkmk_agent_ssh_group }}"
checkmk_agent_authkey_mode "authorized_keys"ファイルのファイルモード設定 "0600"
checkmk_agent_authkey_src "authorized_keys"テンプレートのファイル名 authorized_keys.j2
checkmk_agent_authkey_user "authorized_keys"ファイルの所有ユーザー名 "{{ checkmk_agent_ssh_user }}"
checkmk_agent_cache_group "cache"フォルダーとファイルの所有グループ名 "{{ checkmk_agent_cache_user }}"
checkmk_agent_cache_mode "cache"フォルダーとファイルのファイルモード設定 "{{ checkmk_agent_mode }}"
checkmk_agent_cache_path "cache"フォルダーのフルパス "{{ checkmk_agent_home }}/cache"
checkmk_agent_cache_user "cache"フォルダーとファイルの所有ユーザー名 "{{ checkmk_agent_user }}"
checkmk_agent_comment CheckMKエージェントユーザーのフルネーム CheckMK Agent
checkmk_agent_count_users_crit ログインユーザー数、クリティカルしきい値 15
checkmk_agent_count_users_warn ログインユーザー数、警告しきい値 10
checkmk_agent_count_zombie_procs_crit ゾンビプロセス数、クリティカルしきい値 10
checkmk_agent_count_zombie_procs_warn ゾンビプロセス数、警告しきい値 5
checkmk_agent_dest CheckMKエージェント実行ファイルのフルパス "{{ checkmk_agent_home }}/check_mk_agent"
checkmk_agent_docker_complete すべてのdockerモジュールを含む true
checkmk_agent_docker_dest Docker設定ファイルのフルパス "{{ checkmk_agent_home }}/docker.cfg"
checkmk_agent_docker_group Docker設定ファイルの所有グループ名 "{{ checkmk_agent_group }}"
checkmk_agent_docker_mode Docker設定ファイルのファイルモード設定 "0644"
checkmk_agent_docker_src Docker設定ファイルテンプレートのファイル名 docker.cfg.j2
checkmk_agent_docker_user Docker設定ファイルテンプレートのファイル名 "{{ checkmk_agent_user }}"
checkmk_agent_group CheckMKエージェント実行ファイルの所有グループ名 "{{ checkmk_agent_user }}"
checkmk_agent_home CheckMKエージェントユーザーのホームフォルダーのフルパス /home/{{ checkmk_agent_user }}
checkmk_agent_local_checks "local"フォルダーにコピーするチェックのリスト count_users count_zombie_procs
checkmk_agent_local_checks_async "local"非同期フォルダーにコピーするチェックのリスト (下記のNOTE Aを参照)
checkmk_agent_local_group "local"フォルダーおよびファイルの所有グループ名 "{{ checkmk_agent_local_user }}"
checkmk_agent_local_mode "local"フォルダーとファイルのファイルモード設定 "{{ checkmk_agent_mode }}"
checkmk_agent_local_path "local"フォルダーのフルパス "{{ checkmk_agent_home }}/local"
checkmk_agent_local_purge 同期の前に"local"フォルダーを削除 false
checkmk_agent_local_user "local"フォルダーとファイルの所有ユーザー名 "{{ checkmk_agent_user }}"
checkmk_agent_mode CheckMKエージェント実行ファイルのファイルモード設定 "0755"
checkmk_agent_plugin_checks "plugin"フォルダーにコピーするチェックのリスト hpsa lvm mk_inventory.linux mk_iptables mk_nfsiostat mk_sshd_config netstat.linux nfsexports smart
checkmk_agent_plugin_checks_async "plugin"非同期フォルダーにコピーするチェックのリスト (下記のNOTE Aを参照)
checkmk_agent_plugin_group "plugin"フォルダーおよびファイルの所有グループ名 "{{ checkmk_agent_plugin_user }}"
checkmk_agent_plugin_mode "plugin"フォルダーおよびファイルのファイルモード設定 "{{ checkmk_agent_mode }}"
checkmk_agent_plugin_path "plugin"フォルダーのフルパス "{{ checkmk_agent_home }}/plugins"
checkmk_agent_plugin_purge 同期の前に"plugin"フォルダーを削除 false
checkmk_agent_plugin_user "plugin"フォルダーおよびファイルの所有ユーザー名 "{{ checkmk_agent_user }}"
checkmk_agent_prereqs 成功したインストールに必要なパッケージのリスト python3-docker sudo
checkmk_agent_prereqs_yum YUMパッケージマネージャーを使用するシステムでの成功したインストールに必要なパッケージのリスト sudo
checkmk_agent_src CheckMKエージェント実行ファイルテンプレートのファイル名 check_mk_agent.linux.j2
checkmk_agent_ssh_group ".ssh"フォルダーおよびファイルの所有グループ名 "{{ checkmk_agent_group }}"
checkmk_agent_ssh_mode ".ssh"フォルダーおよびファイルのファイルモード設定 "0700"
checkmk_agent_ssh_path ".ssh"フォルダーのフルパス "{{ checkmk_agent_home }}/.ssh"
checkmk_agent_ssh_user ".ssh"フォルダーおよびファイルの所有ユーザー名 "{{ checkmk_agent_user }}"
checkmk_agent_spool_group "spool"フォルダーおよびファイルの所有グループ名 "{{ checkmk_agent_spool_user }}"
checkmk_agent_spool_mode "spool"フォルダーおよびファイルのファイルモード設定 "{{ checkmk_agent_mode }}"
checkmk_agent_spool_path "spool"フォルダーのフルパス "{{ checkmk_agent_home }}/spool"
checkmk_agent_spool_user "spool"フォルダーおよびファイルの所有ユーザー名 "{{ checkmk_agent_user }}"
checkmk_agent_sudo_dest CheckMKエージェントユーザーにCheckMKエージェント実行ファイルへのsudoアクセスを付与するために使用される"sudoers.d"ファイルのフルパス /etc/sudoers.d/99_cmkagent
checkmk_agent_sudo_group "sudoers.d"ファイルの所有グループ名 "{{ checkmk_agent_sudo_owner }}"
checkmk_agent_sudo_mode "sudoers.d"ファイルのファイルモード設定 "0440"
checkmk_agent_sudo_owner "sudoers.d"ファイルの所有ユーザー名 root
checkmk_agent_sudo_src "sudoers.d"ファイルテンプレートのファイル名 99_cmkagent.j2
checkmk_agent_sudo_validate "sudoers.d"ファイルを検証するために使用されるコマンド;%sはcheckmk_agent_sudo_destで埋め込まれます 'visudo -cf %s'
checkmk_agent_user CheckMKエージェントユーザーのログイン名 cmkagent
checkmk_agent_version インストールするCheckMKエージェントのバージョン 2.3.0p13
checkmk_agent_win_config_dest 設定ファイルのフルパス "{{ checkmk_agent_win_data_folder }}check_mk.user.yml"
checkmk_agent_win_config_optimize 一部の遅いチェックを削除してWindowsエージェントを最適化する true
checkmk_agent_win_config_src 設定ファイルテンプレートのファイル名 check_mk.user.yml.j2
checkmk_agent_win_data_folder CheckMKエージェントデータフォルダーのフルパス C:\\ProgramData\\checkmk\\agent\\
checkmk_agent_win_install_dest CheckMKエージェントインストールファイルのフルパス c:\\Users\\{{ ansible_user }}\\Downloads\\{{ checkmk_agent_win_install_src }}
checkmk_agent_win_install_src CheckMKエージェントインストールファイルの短いファイル名 check_mk_agent.msi
checkmk_agent_win_plugins "plugin"フォルダーにコピーするWindowsプラグインのリスト mk_inventory.vbs windows_updates.vbs
checkmk_agent_win_productid インストール用のバージョン固有の「製品ID」 "{B6212139-D124-4782-8F81-05D08203092D}"

NOTE A

checkmk_agent_local_checks_asynccheckmk_agent_plugin_checks_async - "plugin"非同期フォルダーにコピーするチェックのリストです。ドキュメントによれば:

ローカルチェックの出力は、エージェントプラグインの出力と同様にキャッシュできます。処理時間が長いスクリプトがある場合、キャッシュが必要になります。このようなスクリプトは非同期で実行され、定義された時間間隔でのみ実行され、最後の出力がキャッシュされます。時間が期限切れになる前にエージェントが再度クエリされると、このキャッシュがローカルチェックに使用され、エージェント出力に返されます。

これらのリストの形式は次の通りで、checkmk_agent_plugin_checks_asyncが示されています:

300:
  - apache_status.py
600:
  - ""
900:
  - ""
1800:
  - ""
86400:
  - mk_apt
  - mk_docker.py

これにより、apache_status.pyプラグインは5分ごとに1回のみ実行され、mk_aptおよびmk_docker.pyプラグインは1日1回のみ実行されます。これにより、キャッシュされた値を使用する残りのチェックの秒数が削減されます。

依存関係

まだ定義されていません。

例のプレイブックと呼び出し

ローカルのauthorized_keysファイルを使用する例:

- hosts: all
  roles:
     - { role: kso512.checkmk_agent, checkmk_agent_authkey_src="local/authorized_keys.j2" }

pluginフォルダーを再作成する前に削除する例:

$ ansible-playbook site.yml -t checkmk-agent -e "checkmk_agent_plugin_purge=true"

...

TASK [kso512.checkmk_agent : Delete directory - plugins | FILE] ***********
changed: [instance]

TASK [kso512.checkmk_agent : Create directory - plugins | FILE] ***********
changed: [instance]

ライセンス

GNU一般公衆ライセンス バージョン2

貢献

提案やアイデアがあれば、ぜひイシューをオープンするか、リポジトリをフォークしてマージリクエストを送信してください。

著者情報

プロジェクトについて

A role to install CheckMK RAW edition agent.

インストール
ansible-galaxy install kso512.checkmk_agent
ライセンス
gpl-2.0
ダウンロード
357
所有者