diff --git a/inventory/group_vars/rabbitmq b/inventory/group_vars/rabbitmq index 51ac4dfd46..4965d0f9ad 100644 --- a/inventory/group_vars/rabbitmq +++ b/inventory/group_vars/rabbitmq @@ -43,3 +43,11 @@ zabbix_templates: template: "RabbitMQ node by Zabbix agent" # Template name in roles/zabbix/zabbix_templates/files/templatename.json custom_template: false # Is the template official template bundled with Zabbix or one of our custom templates hostgroup: "fedora rabbitmq" # Zabbix hostgroup + +## CentOS monitoring +# Zabbix server instance +centos_zabbix_server: mon.centos.org +# Name of the RabbitMQ host in Zabbix +centos_zabbix_host: rabbitmq.fedora +centos_zabbix_queues: + - centos-stream-robosignatory diff --git a/roles/rabbitmq_cluster/defaults/main.yml b/roles/rabbitmq_cluster/defaults/main.yml index 563fccd753..4c628f8e4d 100644 --- a/roles/rabbitmq_cluster/defaults/main.yml +++ b/roles/rabbitmq_cluster/defaults/main.yml @@ -1,3 +1,10 @@ --- # https://www.rabbitmq.com/production-checklist.html#resource-limits-file-handle-limit rabbitmq_cluster_file_limit: 500000 + +## CentOS monitoring +# Zabbix server instance +centos_zabbix_server: mon.centos.org +# Name of the RabbitMQ host in Zabbix +centos_zabbix_host: "{{ inventory_hostname }}" +centos_zabbix_queues: [] diff --git a/roles/rabbitmq_cluster/files/send-rabbitmq-queue.py b/roles/rabbitmq_cluster/files/send-rabbitmq-queue.py index 490fbdf1e1..f347823841 100644 --- a/roles/rabbitmq_cluster/files/send-rabbitmq-queue.py +++ b/roles/rabbitmq_cluster/files/send-rabbitmq-queue.py @@ -30,6 +30,7 @@ def parse_args(): "--conf", default=CONF_PATH, help="path to NRPE's rabbitmq_args.ini file" ) parser.add_argument("--vhost", default=VHOST, help="the rabbitmq vhost") + parser.add_argument("-z", "--zabbix", help="the Zabbix server") parser.add_argument( "-s", "--host", default=getfqdn(), help="the server name in Zabbix" ) @@ -49,7 +50,11 @@ def main(): args = parse_args() http = get_http_client(args.conf) vhost = quote(args.vhost, safe="") - zabbix_sender_args = [] + zabbix_sender_args = [ + "-v", + "-z", + args.zabbix, + ] if args.tls_psk_identity: zabbix_sender_args.extend( [ @@ -65,16 +70,16 @@ def main(): for queue_name in args.queue_name: data = get_queue_values(http, vhost, queue_name) for metric, value in data.items(): - command = [ - "zabbit_sender", + cmd = [ + "zabbix_sender", *zabbix_sender_args, "--key", - f"rabbitmq.queue.{queue_name}.{metric}" + f"rabbitmq.queue.{queue_name}.{metric}", "--value", str(value), ] - print(" ".join(command)) - # run(command, check=True) + print(" ".join(cmd)) + run(cmd) if __name__ == "__main__": diff --git a/roles/rabbitmq_cluster/files/send-rabbitmq-queue.service b/roles/rabbitmq_cluster/files/send-rabbitmq-queue.service deleted file mode 100644 index 006d14b5a3..0000000000 --- a/roles/rabbitmq_cluster/files/send-rabbitmq-queue.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Send queue metrics to Zabbix - -[Service] -Type=oneshot -ExecStart=/usr/local/bin/send-rabbitmq-queue --tls-psk-identity foo --tls-psk-file bar centos-stream-robosignatory -User=nrpe -Group=nrpe diff --git a/roles/rabbitmq_cluster/tasks/centos-monitoring.yml b/roles/rabbitmq_cluster/tasks/centos-monitoring.yml index cbe8b37ea5..19b107ed78 100644 --- a/roles/rabbitmq_cluster/tasks/centos-monitoring.yml +++ b/roles/rabbitmq_cluster/tasks/centos-monitoring.yml @@ -1,3 +1,11 @@ +- name: Copy zabbix-agend.conf psk config + ansible.builtin.copy: + src: "{{ private }}/files/zabbix/centos{{env_suffix}}.psk" + dest: /etc/zabbix/centos.psk + owner: nrpe + group: nrpe + mode: "0600" + - name: Copy over the check script ansible.builtin.copy: src: send-rabbitmq-queue.py @@ -6,13 +14,17 @@ owner: root group: nrpe -- name: Setup systemd unit files +- name: Setup systemd service file + ansible.builtin.template: + src: send-rabbitmq-queue.service + dest: /etc/systemd/system/send-rabbitmq-queue.service + notify: + - Reload systemd + +- name: Setup systemd timer file ansible.builtin.copy: - src: send-rabbitmq-queue.{{item}} - dest: /etc/systemd/system/send-rabbitmq-queue.{{item}} - with_items: - - service - - timer + src: send-rabbitmq-queue.timer + dest: /etc/systemd/system/send-rabbitmq-queue.timer notify: - Reload systemd diff --git a/roles/rabbitmq_cluster/tasks/main.yml b/roles/rabbitmq_cluster/tasks/main.yml index ac68d8b83f..921565ca3a 100644 --- a/roles/rabbitmq_cluster/tasks/main.yml +++ b/roles/rabbitmq_cluster/tasks/main.yml @@ -451,7 +451,7 @@ # Queue monitoring for CentOS Zabbix - import_tasks: centos-monitoring.yml - when: inventory_hostname.startswith('rabbitmq03') + when: inventory_hostname.startswith('rabbitmq03') and env == 'production' tags: - rabbitmq_cluster - config diff --git a/roles/rabbitmq_cluster/templates/send-rabbitmq-queue.service b/roles/rabbitmq_cluster/templates/send-rabbitmq-queue.service new file mode 100644 index 0000000000..705af1e92a --- /dev/null +++ b/roles/rabbitmq_cluster/templates/send-rabbitmq-queue.service @@ -0,0 +1,8 @@ +[Unit] +Description=Send queue metrics to Zabbix + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/send-rabbitmq-queue -z {{centos_zabbix_server}} -s {{centos_zabbix_host}} --tls-psk-identity "Fedora RabbitMQ" --tls-psk-file /etc/zabbix/centos.psk {{ centos_zabbix_queues | join(" ") }} +User=nrpe +Group=nrpe