页面“Rabbitmq常用命令”与“Zabbix如何监控进程或端口”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
==创建vhost ==
 
<pre>
 
#创建 lxtx_hello vhost
 
rabbitmqctl  add_vhost  /hello
 
  
为用户设置virtual host 权限 用户为admin:
 
rabbitmqctl  set_permissions  -p  /hello  admin '.*' '.*' '.*'
 
  
rabbitmqctl delete_vhost /hello
 
</pre>
 
  
==开启镜像模式==
 
  
 +
 +
== 监控进程==
 +
zabbix进程监控  监控Rsync 进程
 +
 +
===zabbix monitor===
 
<pre>
 
<pre>
#为 vhost  hello  开启镜像  ,名为  mirror4_hello
+
1、主机下新建监控项
rabbitmqctl set_policy -p hello  mirror4_hello  "^" '{"ha-mode":"all"}'
 
Setting policy "mirror4_hello" for pattern "^" to "{\"ha-mode\":\"all\"}" with priority "0"
 
  
#默认vhost
+
配置--主机--点击主机监控项--创建监控项-
rabbitmqctl set_policy    mirror4_newcailuw  "^" '{"ha-mode":"all"}'
 
  
#书面一点的解说
+
名称-Rsync-proc
#这行命令在vhost名称为hello创建了一个策略,策略名称为mirror4_hello ,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称
 
  
参数
+
类型-zabbix客户端
  
ha-mode:策略键
+
键值-proc.num[,root,all,rsyncd]
1.all 队列镜像在群集中的所有节点上。当新节点添加到群集时,队列将镜像到该节点
 
2.exactly 集群中的队列实例数。
 
3.nodes 队列镜像到节点名称中列出的节点。
 
  
ha-sync-mode:队列同步
+
信息类型-数字(无正负)
1.manual手动<默认模式>.新的队列镜像将不会收到现有的消息,它只会接收新的消息。
 
2.automatic自动同步.当一个新镜像加入时,队列会自动同步。队列同步是一个阻塞操作。
 
作者:全能程序猿
 
链接:https://www.jianshu.com/p/f81d62a8de02
 
来源:简书
 
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
</pre>
 
  
 +
数据类型-十进位数字
  
[https://www.jianshu.com/p/f81d62a8de02 RabbitMQ镜像策略set_policy]
+
应用集-Processes
  
[https://blog.csdn.net/wexiaoword/article/details/81352045 rabbitMq集群之镜像模式]
+
如图
 +
</pre>
 +
[[文件:Zabbixpro.png]]
 +
<pre>
 +
PRONAME=flume
 +
num=`ps -ef|grep java|grep $PRONAME|wc -l`
 +
 +
zabbix_get -s 118.89.28.39  -p10050 -k ""
 +
 +
zabbix_get -s 118.89.28.39 -p 10050 -k "proc.num[,root,all,flume]"
 +
zabbix_get -s 118.89.28.39 -p 10050 -k "proc.num[,root,all,salt-minion]"
 +
 +
ssdb
 +
zabbix_get -s 123.207.227.123 -p 10050 -k "proc.num[,root,all,ssdb]"
  
https://www.rabbitmq.com/parameters.html
+
zabbix_get -s 118.89.28.39 -p 10050 -k "proc.num[,root,all,ssdb]"
  
https://www.rabbitmq.com/rabbitmqctl.8.html
 
  
= *  Rabbitmq 用户角色及权限控制=
 
  
  
 +
2、创建触发器
  
==RabbitMQ的用户角色分类:==
+
  配置--主机--点击主机触发器--创建触发器
  none、management、policymaker、monitoring、administrator
 
  
==RabbitMQ各类角色描述:==
+
名称--    Rsync-Server-Proc on server{HOST.NAME}
<pre>
 
none
 
不能访问 management plugin
 
  
management
+
表达式--  {ad-admin:proc.num[,root,all,rsyncd].last()}=0
用户可以通过AMQP做的任何事外加:
 
列出自己可以通过AMQP登入的virtual hosts  
 
查看自己的virtual hosts中的queues, exchanges 和 bindings
 
查看和关闭自己的channels 和 connections
 
查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。
 
  
policymaker 
+
表达式--可以使用添加--选择刚刚添加的监控项--然后选择值
management可以做的任何事外加:
 
查看、创建和删除自己的virtual hosts所属的policies和parameters
 
  
monitoring  
 
management可以做的任何事外加:
 
列出所有virtual hosts,包括他们不能登录的virtual hosts
 
查看其他用户的connections和channels
 
查看节点级别的数据如clustering和memory使用情况
 
查看真正的关于所有virtual hosts的全局的统计信息
 
  
administrator   
+
zabbix_get -s 11.8.0.22 -p 10050 -k "proc.num[,root,all,rsyncd]" 可以使用这个命令去或者服务器端口当前的值,然后判断
policymaker和monitoring可以做的任何事外加:
 
创建和删除virtual hosts
 
查看、创建和删除users
 
查看创建和删除permissions
 
关闭其他用户的connections </pre>
 
  
=Note=
 
<pre>
 
  
administrator一定能看到 cluster信息,manager不行
 
  
monitoring  也可以
 
</pre>
 
  
  
=* 创建用户 =
 
<pre>
 
 
** 新增用户admin,密码1234
 
  
rabbitmqctl  add_user admin 1234
 
  
** 也可以使用rabbitmqctl命令更改密码
+
名称:ssdb-Server-Proc on server{HOST.NAME}
  
rabbitmqctl change_password admin adm
+
#选择就行了不用手工写
 +
表达式: {da_123.207.227.123:proc.num[,root,all,ssdb].last()}=0
  
** 将admin加入到管理员组 赋予其management角色:
 
rabbitmqctl set_user_tags admin administrator
 
  
  
** 查看用户列表
+
{ad-admin:proc.num[,root,all,rsyncd].last()}=0
 +
</pre>
  
rabbitmqctl  list_users</pre>
+
==监控端口==
  
=运维常用命令=
+
===zabbix server monitor ===  
==rabbitmqadmin==
 
 
<pre>
 
<pre>
一般情况下,我们会使用 rabbitmq_management 插件,通过 Web UI 的方式来监控和操作 RabbitMQ(端口 15672),但有时候命令的方式会更加方便一些,RabbitMQ 提供了 CLI 管理工具 rabbitmqadmin ,其实就是基于 RabbitMQ 的 HTTP API,用 Python 写的一个脚本。
+
1、主机下新建监控项
 +
 
 +
zabbix监控端口
 +
使用zabbix的item中的key来做端口
  
 +
监控进程的key
 +
net.tcp.listen[port]
  
 +
key对应的释义
 +
Checks if this TCP port is in LISTEN state. Returns 0 - it is not in LISTEN state; 1 - it is in LISTEN state
 +
检测tcp端口的状态,监听中返回1,未监听返回0
  
 +
示例中的key值配置
 +
net.tcp.listen[3307]
  
 +
zabbix中item的配置如下:
 
</pre>
 
</pre>
==rabbitmqadmin 命令汇总:==
+
[[文件:zabport1.png]]
 +
 
 +
[[文件:esport.png]]
 
<pre>
 
<pre>
 +
2、创建触发器
 +
报警设置当然也用zabbix的trigger
  
命令 解释
+
相应的trigger对应的Expression如下:
rabbitmqadmin list users 查看所有用户 User
+
{test_agentd:net.tcp.listen[3307].last(0)}=0
rabbitmqadmin list users name 查看所有用户名 Username
+
 
rabbitmqadmin list users tags 查看所有用户角色
+
zabbix中trigger的配置如下:
rabbitmqadmin list vhosts 查看所有虚拟主机
 
rabbitmqadmin list connections 查看所有连接
 
rabbitmqadmin list exchanges 查看所有路由 Exchange
 
rabbitmqadmin list bindings 查看所有路由与队列的关系绑定 Binding
 
rabbitmqadmin list permissions 查看所有角色的权限 Permission
 
rabbitmqadmin list channels 查看所有通道 Channel
 
rabbitmqadmin list consumers 查看所有消费者 Consumer
 
rabbitmqadmin list queues 查看所有消息队列 Queue
 
rabbitmqadmin list nodes 查看所有节点 Node
 
rabbitmqadmin show overview 概览 Overview
 
rabbitmqadmin list bindings source destination_type destination properties_key 查看所有路由与队列的关系绑定的详细信息 Binding
 
rabbitmqadmin declare queue name=test durable=true 定义一个队列queue,durable=true代表持久化打开。
 
rabbitmqadmin declare exchange name=my.fanout type=fanout 定义一个Fanout路由
 
rabbitmqadmin declare exchange name=my.direct type=direct 定义一个Direct路由
 
rabbitmqadmin declare exchange name=my.topic type=topic 定义一个Topic路由
 
rabbitmqadmin declare binding source=my.fanout destination=test routing_key=first 定义 binding
 
rabbitmqadmin publish routing_key=test payload="hello world" 发布一条消息
 
rabbitmqadmin publish routing_key=my.test exchange=my.topic payload="hello world" 使用路由转发消息
 
rabbitmqadmin get queue=test requeue=true 查看消息,不消费
 
rabbitmqadmin get queue=test requeue=false 查看消息,并消费
 
rabbitmqadmin purge queue name=test 删除队列中的所有消息 清空队列
 
rabbitmqadmin delete queue name=hello 删除消息队列 Queue
 
rabbitmqadmin delete user name=test 删除用户 User
 
rabbitmqadmin delete exchange name=test 删除路由器 Exchange
 
rabbitmqadmin delete binding source='kk' destination_type=queue destination=test properties_key=test 删除路由器与消息队列的关系绑定 Binding
 
rabbitmqadmin -f raw_json list users raw_json 格式化输出
 
rabbitmqadmin -f long list users 格式化输出
 
rabbitmqadmin -f pretty_json list users pretty_json 格式化输出
 
rabbitmqadmin -f kvp list users 格式化输出
 
rabbitmqadmin -f tsv list users 格式化输出
 
rabbitmqadmin -f table list users table 格式化输出
 
rabbitmqadmin -f bash list users bash 格式化输出
 
 
</pre>
 
</pre>
 
+
[[文件:zabport2.png]]
==NOTE==
 
注意  运维 例如查看队列 是用  rabbitmqadmin ,rabbitmqadmin  --username=admin  --password=333  list queues  不是  rabbitmqctl list_queues 早上 同桌也说是这个 ,搞半天 还以为集群坏了呢 还看什么日志
 
 
 
=RabbitMQ 概念:=
 
 
<pre>
 
<pre>
概念 详解
+
加上zabbix邮件报警,你就可以停掉对应的进程或者端口来检测是否达到预期期望,即触发了trigger,而后发送报警邮件。
Exchange 消息交换机,它指定消息按什么规则,路由到哪个队列
 
Queue 消息队列,每个消息都会被投入到一个或多个队列
 
Binding 绑定,它的作用就是把 exchange 和 queue 按照路由规则绑定起来
 
Routing Key 路由关键字,exchange 根据这个关键字进行消息投递
 
Vhost 虚拟主机,可以开设多个 vhost,用作不同用户的权限分离
 
Producer 消息生产者,就是投递消息的程序
 
Consumer 消息消费者,就是接受消息的程序
 
Channel 消息通道,在客户端的每个连接里,可建立多个 channel,每个 channel 代表一个会话任务
 
 
</pre>
 
</pre>
=查看 RabbitMQ日志=
 
  
 +
==参考==
 +
[https://wing324.github.io/2016/05/31/zabbix%E5%A6%82%E4%BD%95%E7%9B%91%E6%8E%A7%E8%BF%9B%E7%A8%8B%E6%88%96%E7%AB%AF%E5%8F%A3/ zabbix如何监控进程或端口]
  
 +
[http://yangrong.blog.51cto.com/6945369/1548670 原来zabbix监控进程与端口是如此的简单]
  
[https://blog.csdn.net/weixin_33716941/article/details/90324587 学会查看 RabbitMQ日志]
 
  
=* see alse=
+
[https://www.cnblogs.com/netsa/p/7783518.html zabbix 客户端添加自定义参数]
[https://blog.csdn.net/zyz511919766/article/details/42292655 RabbitMQ用户角色及权限控制]
 
  
[https://blog.csdn.net/chenshourui/article/details/81203770 rabbitmq学习笔记2 : 添加用户和virtual hosts]
+
http://www.centos.ws/?p=59
 
+
 
+
zabbix监控进程
[https://www.cnblogs.com/xishuai/p/rabbitmq-cli-rabbitmqadmin.html RabbitMQ CLI 管理工具 rabbitmqadmin(管理和监控)]
+
http://825536458.blog.51cto.com/4417836/1877829
 
+
 
+
zabbix监控mysql主从
[https://www.rabbitmq.com/management-cli.html Management Command Line Tool官网]
+
http://825536458.blog.51cto.com/4417836/1775341
 
 
[https://www.jianshu.com/p/8414cd70bef1 05_RabbitMQ 的CLI管理工具 rabbitmqadmin]
 
  
  
[[category:ops]]
+
[[category:zabbix]]

2020年1月11日 (六) 03:08的版本



监控进程

zabbix进程监控 监控Rsync 进程

zabbix monitor

1、主机下新建监控项

配置--主机--点击主机监控项--创建监控项-

名称-Rsync-proc

类型-zabbix客户端

键值-proc.num[,root,all,rsyncd]

信息类型-数字(无正负)

数据类型-十进位数字

应用集-Processes

如图

文件:Zabbixpro.png

PRONAME=flume
num=`ps -ef|grep java|grep $PRONAME|wc -l` 
 
zabbix_get -s 118.89.28.39  -p10050 -k ""
 
 zabbix_get -s 118.89.28.39 -p 10050 -k "proc.num[,root,all,flume]"
 zabbix_get -s 118.89.28.39 -p 10050 -k "proc.num[,root,all,salt-minion]"
 
ssdb
zabbix_get -s 123.207.227.123 -p 10050 -k "proc.num[,root,all,ssdb]"

zabbix_get -s 118.89.28.39 -p 10050 -k "proc.num[,root,all,ssdb]"




2、创建触发器

 配置--主机--点击主机触发器--创建触发器

名称--     Rsync-Server-Proc on server{HOST.NAME}

表达式--  {ad-admin:proc.num[,root,all,rsyncd].last()}=0

表达式--可以使用添加--选择刚刚添加的监控项--然后选择值


zabbix_get -s 11.8.0.22 -p 10050 -k "proc.num[,root,all,rsyncd]" 可以使用这个命令去或者服务器端口当前的值,然后判断







名称:ssdb-Server-Proc on server{HOST.NAME}

#选择就行了不用手工写 
表达式: {da_123.207.227.123:proc.num[,root,all,ssdb].last()}=0



{ad-admin:proc.num[,root,all,rsyncd].last()}=0

监控端口

zabbix server monitor

1、主机下新建监控项

zabbix监控端口
使用zabbix的item中的key来做端口

监控进程的key
net.tcp.listen[port]

key对应的释义
Checks if this TCP port is in LISTEN state. Returns 0 - it is not in LISTEN state; 1 - it is in LISTEN state
检测tcp端口的状态,监听中返回1,未监听返回0

示例中的key值配置
net.tcp.listen[3307]

zabbix中item的配置如下:

文件:Zabport1.png

Esport.png

2、创建触发器
报警设置当然也用zabbix的trigger

相应的trigger对应的Expression如下:
{test_agentd:net.tcp.listen[3307].last(0)}=0

zabbix中trigger的配置如下:

文件:Zabport2.png

加上zabbix邮件报警,你就可以停掉对应的进程或者端口来检测是否达到预期期望,即触发了trigger,而后发送报警邮件。

参考

zabbix如何监控进程或端口

原来zabbix监控进程与端口是如此的简单


zabbix 客户端添加自定义参数

http://www.centos.ws/?p=59

zabbix监控进程 http://825536458.blog.51cto.com/4417836/1877829

zabbix监控mysql主从 http://825536458.blog.51cto.com/4417836/1775341