erlang物联网开源项目emqttd下载,编译和图形化监控相关

erlang官方文档,http://erlang.org/doc/man/

https://github.com/emqx

https://github.com/emqtt

https://github.com/emqtt/emq-relx

https://github.com/emqtt/emqttd

https://github.com/emqtt/esockd

https://github.com/emqtt/esockd/tree/v4.2

https://github.com/emqtt/gen_logger

https://github.com/emqtt/emqtt_benchmark

https://github.com/mochi/mochiweb

https://github.com/uwiger/gproc

https://github.com/basho/lager

https://github.com/devinus/poolboy

https://github.com/ferd/recon

 

我写的两篇重要的文章推荐,请先看:

centos7环境下的erlang otp的编译

erlang无图形界面的linux下如何使用observer:start().

 

+++++++++++++++v1.1.3++++++++++++++++++++++

https://github.com/emqtt/emqttd

cd emqttd make && make dist 

编译成功后,可执行程序包在目录: rel/emqttd 

控制台启动编译的emqttd程序包: 

cd rel/emqttd && ./bin/emqttd console

./emqttd start

./emqttd stop
./emqttd_ctl cluster join emqttd@172.16.6.161
./emqttd_ctl cluster status
./emqttd_ctl cluster leave
./emqttd_ctl cluster remove emqttd_copy@172.16.6.161

 

图形化监控

在Windows安装erlang OTP,然后在cmd命令提示符输入:
werl -name firecat@172.16.6.??? -setcookie emqttdsecretcookie
或者werl -name firecat@127.0.0.1 -setcookie emqttdsecretcookie
observer:start().
然后shell输入终端命令observer:start().弹出对话框,点击菜单Nodes->Connect Node,输入Linux的节点名称
emqttd@172.16.6.161

emqttd_copy@172.16.6.161

emq1.0和2.0架构变化很大,编译和下载的方式不同了。2.0要求OTP版本在19.1以上,本人使用19.3。

 

++++++++++++++++++++++v2.3.7++++++++++++++++++++

https://github.com/emqtt/emq-relx,要求erlang OTP 19.3+版本

下载解压完成,编译,编译过程会自动去github下载相关的依赖库源码,完整的命令如下:

如果提示/bin/sh: git: command not found,需要安装git
yum install -y git

chmod -R 777 emq-relx-2.3.7 #获得整个文件夹所有文件的权限

cd emq-relx-2.3.7 && make

cd _rel/emqttd && ./bin/emqttd console

或者 ./_rel/emqttd/bin/emqttd console

或者 ./_rel/emqttd/bin/emqttd start

        ./_rel/emqttd/bin/emqttd stop

编译发布插件:

Makefile 增加 

DEPS: DEPS += plugin_name

dep_plugin_name = git url_of_plugin 

relx.config 中 release 段落添加: 

{plugin_name, load},

编译完成之后,/home/firecat/Prj/emq2.0/emq-relx-2.3.7/data/loaded_plugins设置自启动插件

原始的配置文件的路径是,编译完成每次都会从这里copy一份到_rel

/home/firecat/Prj/emq2.0/emq-relx-2.3.7/deps/emqttd/etc/emq.conf

/home/firecat/Prj/emq2.0/emq-relx-2.3.7/data/loaded_plugins

 

注意:使用XftpPortable软件时,不要用Windows的写字板来编辑emq.conf和loaded_plugins等文件,否则编码不同,会导致emqttd的进程起不来。

 

在Windows操作系统使用图形化监控

在Windows安装erlang OTP,然后在cmd命令提示符输入:
werl -name firecat@172.16.6.??? -setcookie emqsecretcookie
或者werl -name firecat@127.0.0.1 -setcookie emqsecretcookie
observer:start().

然后shell输入终端命令observer:start().弹出对话框,点击菜单Nodes->Connect Node,输入Linux的节点名称

emq@172.16.6.161

 

如果是Linux虚拟机建议使用NAT网络模式,因为Ip地址比较固定,

在物理机Windows终端命令行输入:
werl -name firecat@127.0.0.1 -setcookie emqsecretcookie
werl -name firecat@192.168.83.1 -setcookie emqsecretcookie
observer:start().
emq@192.168.83.128
然后shell输入终端命令observer:start().弹出对话框,点击菜单Nodes->Connect Node,输入Linux的节点名称emq@192.168.83.128

 

emq运行之后,在linux后台的进程名称是:beam.smp

[root@localhost emq-relx-2.3.7]# netstat -tunlp|egrep "beam.smp"
tcp        0      0 127.0.0.1:11883         0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        0      0 0.0.0.0:8883            0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        0      0 0.0.0.0:8084            0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        4      0 0.0.0.0:6369            0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        0      0 0.0.0.0:18083           0.0.0.0:*               LISTEN      31483/beam.smp      
tcp        0      0 0.0.0.0:18084           0.0.0.0:*               LISTEN      31483/beam.smp      
[root@localhost emq-relx-2.3.7]# kill -9 31483

 

 

 

常见问题解答:

1、EMQ有kafka插件吗?

答:没,要自己写个,用erlang brod库。https://github.com/klarna/brod

或者erlang ekaf库。https://github.com/helpshift/ekaf

这里有个我自己写的完整kafka项目:

https://blog.csdn.net/libaineu2004/article/details/79542220

参考博客:

(1)https://github.com/msdevanms/emqttd_plugin_kafka_bridge

(2)http://www.cnblogs.com/wunaozai/p/8249657.html

2、EMQ是ejabberd+activemq+rabbitmq的综合体

https://www.ejabberd.im/

https://github.com/TTalkIM

http://www.rabbitmq.com/

http://activemq.apache.org/

3、EMQ的hook和session是参考了ejabberd的。

4、CentOS7默认的防火墙是firewall,关掉它

关闭firewall防火墙:sudo systemctl stop firewalld.service 

关闭firewall开机启动:sudo systemctl disable firewalld.service

firewall-cmd --state #查看状态

5、如果出现域名解析出错

curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

则修改/etc/resolv.conf,添加

nameserver 8.8.8.8
nameserver 202.106.0.20

6、压缩命令

tar -zcvf emq-relx-2.3.7.tar.gz emq-relx-2.3.7

解压命令

tar -xvf emq-relx-2.3.7.tar.gz

7、erlang打印输出

io:format("Value is ~p~n", [Val]).%原生打印

io:format("Value is ~w~n", [Val]).%二进制打印

8、emq常用终端命令

./_rel/emqttd/bin/emqttd console
./_rel/emqttd/bin/emqttd start
./_rel/emqttd/bin/emqttd_ctl status
./_rel/emqttd/bin/emqttd stop

./_rel/emqttd/bin/emqttd_ctl cluster join emq@192.168.0.116
./_rel/emqttd/bin/emqttd_ctl cluster status
./_rel/emqttd/bin/emqttd_ctl cluster leave

9、netstat -nalp|grep 1883#查看1883端口的连接情况,观察TCP状态图
netstat -nalp|grep 1883|wc -l #查看1883端口的客户端连接数
ulimit -n 102400 #修改当前进程的最大文件数

阅读更多

更多精彩内容