rabbitmq实验(一)

环境:CentOS7.5

配置:

 准备基础环境:

安装最小化的系统,root密码为redhat

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.60.130
GATEWAY=192.168.60.2
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl stop NetworkManager && systemctl disable NetworkManager
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# vi /etc/sysconfig/selinux 
SELINUX=disabled
[root@localhost ~]# mkdir /etc/yum.repos.d/bak
[root@localhost ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
[root@localhost ~]# vi /etc/yum.repos.d/iso.repo
[cdrom]
name=cdrom
baseurl=file:///mnt/cdrom
gpgcheck=0
enable=1
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# echo '/dev/cdrom /mnt/cdrom iso9660 defaults 0 0' >>/etc/fstab 
[root@localhost ~]# mount -a
[root@localhost ~]# vi /etc/yum.repos.d/CentOS-163-Base.repo 
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

[root@localhost ~]# yum repolist
repolist: 26,169
[root@localhost ~]# yum install -y ntp vim net-tools tcpdump strace sysstat iotop pciutils lsof telnet lrzsz dos2unix psmisc tree wget bash-completio
[root@localhost ~]# hostnamectl set-hostname allinone
[root@allinone ~]# vim /etc/hosts
127.0.0.1   allinone
::1         allinone
[root@localhost ~]# poweroff 

做快照,克隆新的虚拟机

 安装,启动服务

[root@allinone ~]# yum install epel-release -y
[root@allinone ~]# yum -y install rabbitmq-server

[root@allinone ~]# systemctl start rabbitmq-server
[root@allinone ~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

### 修改guest用户密码
[root@allinone ~]# rabbitmqctl change_password guest guest
Changing password for user "guest" ...
...done.

### 开启web管理插件
[root@allinone ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@allinone ~]# systemctl restart rabbitmq-server

[root@allinone ~]# vim /etc/hosts
127.0.0.1   allinone
192.168.60.129   allinone

 登录web管理页面:

管理用户及权限:

[root@allinone ~]# rabbitmqctl help
Usage:
rabbitmqctl [-n <node>] [-q] <command> [<command options>] 
[root@allinone ~]# rabbitmqctl add_user tracer redhat
Creating user "tracer" ...
...done.
[root@allinone ~]# rabbitmqctl set_permissions tracer ".*" ".*" ".*"
Setting permissions for user "tracer" in vhost "/" ...
...done.
[root@allinone ~]# rabbitmqctl list_users
Listing users ...
guest    [administrator]
tracer    []
...done.

RabbitMQ有一个可跟踪所有消息的内置功能,称为Firehose Tracer。开启后,进入系统的所有消息都将复制到amq.rabbitmq.trace这个交换(Exchange)

以下,用脚本抓取消息队列中的消息:

[root@allinone ~]# ll pika-0.10.0.tar.gz 
-rw-r--r-- 1 root root 82642 Jul 27 14:58 pika-0.10.0.tar.gz
[root@allinone ~]# tar -xf pika-0.10.0.tar.gz 
[root@allinone ~]# cd pika-0.10.0/
[root@allinone pika-0.10.0]# python setup.py install
[root@allinone pika-0.10.0]# cd
[root@allinone ~]# vim rmq_trace.py
#!/usr/bin/env python

'''
Maintained at: https://gitlab.com/mweetman/rmq-trace
'''

from __future__ import print_function
import getopt
import json
import sys
import pika


def usage():
  print('Usage: %s OPTIONS' % sys.argv[0])
  print('\nOPTIONS:')
  print(' [-u] (--user)      user with permissions on amq.rabbitmq.trace exchange')
  print(' [-p] (--password)  password for trace user')
  print(' [-t] (--target)    IP RabbitMQ is bound to')
  print(' [-h] (--help)      print this message')


def callback(ch, method, properties, body):
  print("[*] routing key: %s\n    node: %s\n    headers: %s\n    body:\n%s\n" % (
      method.routing_key,
      properties.headers["node"],
      properties.headers["routing_keys"],
      json.loads(body),
      ))


def main():
  try:
    opts, args = getopt.getopt(sys.argv[1:], "u:p:t:h", ["user=", "password=", "target=", "help"])
  except getopt.GetoptError as err:
    print(str(err))
    usage()
    return 1
  for opt, arg in opts:
    if opt in ("-u", "--user"):
      user = arg
    elif opt in ("-p", "--password"):
      password = arg
    elif opt in ("-t", "--target"):
      target = arg
    elif opt in ("-h", "--help"):
      usage()
      return 0
    else:
      assert False, '<*> unhandled option'
      return 1

  # set defaults if unspecified
  try:
    user
  except:
    user = 'guest'
    print("> using 'guest' as the username")

  try:
    password
  except:
    print("> using 'guest' as the password")
    password = 'guest'

  try:
    target
  except:
    target = 'localhost'
    print("> connecting to 'localhost'")

  # connect to RabbitMQ
  credentials = pika.PlainCredentials(user, password)
  connection = pika.BlockingConnection(pika.ConnectionParameters(
      target,
      5672,
      '/',
      credentials))
  channel = connection.channel()
  queue_name = "firehose"
  result = channel.queue_declare(queue=queue_name, exclusive=False)

  channel.queue_bind(exchange='amq.rabbitmq.trace',
                     queue=queue_name,
                     routing_key="#")

  channel.basic_consume(callback,
                        queue=queue_name,
                        no_ack=True)

  channel.start_consuming()

if __name__ == "__main__":
  rc = main()
  exit(rc)
[root@allinone ~]# ./rmq_trace.py -u tracer -p redhat -t 127.0.0.1 >/tmp/rabbit.trace

配置rabbitmqadmin工具

[root@allinone ~]# rabbitmqctl set_user_tags tracer administrator
Setting tags for user "tracer" to [administrator] ...
...done.
[root@allinone ~]# rabbitmqctl list_users
Listing users ...
guest    [administrator]
tracer    [administrator]
...done.
[root@allinone ~]# cat .rabbitmqadmin.conf
[default]
hostname = 127.0.0.1
port = 5672
username = tracer
password = redhat

[root@allinone ~]# chmod +x /var/lib/rabbitmq/mnesia/rabbit@allinone-plugins-expand/rabbitmq_management-3.3.5/priv/www/cli/rabbitmqadmin
[root@allinone ~]# /var/lib/rabbitmq/mnesia/rabbit@allinone-plugins-expand/rabbitmq_management-3.3.5/priv/www/cli/rabbitmqadmin help config
Usage
=====
rabbitmqadmin [options] subcommand

Configuration File
==================
 

用rabbitmqadmin工具创建exchange、queue、message

卡点:rabbitmqadmin命令报错

[root@allinone ~]# ./rabbitmqadmin list users
Traceback (most recent call last):
  File "./rabbitmqadmin", line 943, in <module>
    main()
  File "./rabbitmqadmin", line 384, in main
    method()
  File "./rabbitmqadmin", line 526, in invoke_list
    format_list(self.get(uri), cols, obj_info, self.options)
  File "./rabbitmqadmin", line 407, in get
    return self.http("GET", "/api%s" % path, "")
  File "./rabbitmqadmin", line 436, in http
    resp = conn.getresponse()
  File "/usr/lib64/python2.7/httplib.py", line 1113, in getresponse
    response.begin()
  File "/usr/lib64/python2.7/httplib.py", line 444, in begin
    version, status, reason = self._read_status()
  File "/usr/lib64/python2.7/httplib.py", line 400, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib64/python2.7/socket.py", line 476, in readline
    data = self._sock.recv(self._rbufsize)
socket.error: [Errno 104] Connection reset by peer
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值