Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tengine 里无法使用 statsd 的动态模块 #506

Closed
higkoo opened this issue Aug 20, 2014 · 1 comment
Closed

Tengine 里无法使用 statsd 的动态模块 #506

higkoo opened this issue Aug 20, 2014 · 1 comment

Comments

@higkoo
Copy link
Contributor

higkoo commented Aug 20, 2014

statsd的项目地址: https://github.com/zebrafishlabs/nginx-statsd

tengine -v

Tengine version: Tengine/2.0.3 (nginx/1.4.7)

tengine -t

nginx: [emerg] can't locate symbol in module "ngx_http_statsd" in /etc/tengine/tengine.conf:16
configuration file /etc/tengine/tengine.conf test failed

出错是由于加载了这个模块:load ngx_http_statsd.so; 不成功导致的

编译过程的日志

$ cat /tmp/build.log
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.7knwYD

  • umask 022
  • cd /data/hukai/rpmbuild/BUILD
  • LANG=C
  • export LANG
  • unset DISPLAY
  • mkdir -pv /data/hukai/rpmbuild/BUILD/tengine-statsd-14.08
    mkdir: created directory `/data/hukai/rpmbuild/BUILD/tengine-statsd-14.08'
  • cd /data/hukai/rpmbuild/BUILD/tengine-statsd-14.08
  • echo A
  • unzip /data/hukai/rpmbuild/SOURCES/nginx-statsd-master.zip
    Archive: /data/hukai/rpmbuild/SOURCES/nginx-statsd-master.zip
    b756a12abf110b9e36399ab7ede346d4bb86d691
    creating: nginx-statsd-master/
    inflating: nginx-statsd-master/LICENSE
    inflating: nginx-statsd-master/README.mkd
    inflating: nginx-statsd-master/config
    inflating: nginx-statsd-master/ngx_http_statsd.c
  • exit 0
    Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.QVA3uM
  • umask 022
  • cd /data/hukai/rpmbuild/BUILD
  • LANG=C
  • export LANG
  • unset DISPLAY
  • exit 0
    Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.48TD2U
  • umask 022
  • cd /data/hukai/rpmbuild/BUILD
  • '[' /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64 '!=' / ']'
  • rm -rf /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64
    ++ dirname /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64
  • mkdir -p /data/hukai/rpmbuild/BUILDROOT
  • mkdir /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64
  • LANG=C
  • export LANG
  • unset DISPLAY
  • mkdir -pv /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64/usr/lib64/tengine/modules
    mkdir: created directory /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64/usr' mkdir: created directory/data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64/usr/lib64'
    mkdir: created directory /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64/usr/lib64/tengine' mkdir: created directory/data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64/usr/lib64/tengine/modules'
  • /usr/sbin/dso_tool --nginx-include=/usr/share/tengine/include --dst=/data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64/usr/lib64/tengine/modules --add-module=/data/hukai/rpmbuild/BUILD/tengine-statsd-14.08/nginx-statsd-master
    configuring additional modules
    adding module in /data/hukai/rpmbuild/BUILD/tengine-statsd-14.08/nginx-statsd-master
    /data/hukai/rpmbuild/BUILD/tengine-statsd-14.08/nginx-statsd-master
    • ngx_http_statsd will be compiled
      cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DNDK_SET_VAR -fPIC
      -I/usr/include/libxml2 -Iobjs -I/usr/share/tengine/include
      -o objs/src/nginx-statsd-master/ngx_http_statsd.o
      /data/hukai/rpmbuild/BUILD/tengine-statsd-14.08/nginx-statsd-master/ngx_http_statsd.c
      cc -rdynamic -fPIC -shared -o objs/ngx_http_statsd.so
      objs/src/nginx-statsd-master/ngx_http_statsd.o
      -Wl,-E -lssl
      copying objs/ngx_http_statsd.so to /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64/usr/lib64/tengine/modules
  • find /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64 -type f -name .packlist -exec rm -f '{}' ';'
  • find /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64 -type f -name perllocal.pod -exec rm -f '{}' ';'
  • find /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64 -type f -empty -exec rm -f '{}' ';'
  • find /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64 -type f -iname '*.so' -exec chmod 0755 '{}' ';'
  • /usr/lib/rpm/check-buildroot
  • /usr/lib/rpm/redhat/brp-compress
  • /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
  • /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
  • /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
  • /usr/lib/rpm/brp-python-bytecompile
  • /usr/lib/rpm/redhat/brp-python-hardlink
  • /usr/lib/rpm/redhat/brp-java-repack-jars
    Processing files: tengine-statsd-14.08-20.el6.x86_64
    Provides: ngx_http_statsd.so()(64bit) webserver
    Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh
    Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    Requires(pre): /bin/sh shadow-utils
    Requires(post): /bin/sh chkconfig
    Requires(preun): /bin/sh chkconfig initscripts
    Requires(postun): /bin/sh initscripts
    Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.4)(64bit) libssl.so.10()(64bit) rtld(GNU_HASH)
    Checking for unpackaged file(s): /usr/lib/rpm/check-files /data/hukai/rpmbuild/BUILDROOT/tengine-statsd-14.08-20.el6.x86_64
    Wrote: /data/hukai/rpmbuild/SRPMS/tengine-statsd-14.08-20.el6.nosrc.rpm
    Wrote: /data/hukai/rpmbuild/RPMS/x86_64/tengine-statsd-14.08-20.el6.x86_64.rpm
    Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.aFzmOn
  • umask 022
  • cd /data/hukai/rpmbuild/BUILD
  • rm -rf /data/hukai/rpmbuild/BUILD/tengine-statsd-14.08
  • exit 0

ldd /usr/lib64/tengine/modules/ngx_http_statsd.so

linux-vdso.so.1 =>  (0x00007fff6f314000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f651a666000)
libc.so.6 => /lib64/libc.so.6 (0x00007f651a2d4000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f651a091000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f6519db2000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f6519bae000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f6519981000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f65195a1000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f651939d000)
libz.so.1 => /lib64/libz.so.1 (0x00007f6519186000)
/lib64/ld-linux-x86-64.so.2 (0x0000003169e00000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f6518f7b000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f6518d78000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f6518b5d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6518940000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f6518720000)

statsd 是一个非常好的实习展现系统,用了它。什么实时访问量啥的瞬间搞定。求解

strace tengine -t

open("/usr/lib64/tengine/modules/ngx_http_statsd.so", O_RDONLY) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\r\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=99101, ...}) = 0
mmap(NULL, 2106664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7f826cea2000
mprotect(0x7f826cea4000, 2097152, PROT_NONE) = 0
mmap(0x7f826d0a4000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2000) = 0x7f826d0a4000
close(5) = 0
write(3, "2014/08/21 00:35:34 [emerg] 1857"..., 117) = 117
write(2, "nginx: [emerg] can't locate symb"..., 95nginx: [emerg] can't locate symbol in module "ngx_http_statsd" in /etc/tengine/tengine.conf:16
) = 95
close(4)

ldd -u /usr/lib64/tengine/modules/ngx_http_statsd.so

 26831: /usr/lib64/tengine/modules/ngx_http_statsd.so: error: symbol lookup error: undefined symbol: ngx_http_core_module (continued)

undefined symbol: ngx_http_core_module (/usr/lib64/tengine/modules/ngx_http_statsd.so)
26831: /usr/lib64/tengine/modules/ngx_http_statsd.so: error: symbol lookup error: undefined symbol: ngx_io (continued)
undefined symbol: ngx_io (/usr/lib64/tengine/modules/ngx_http_statsd.so)
26831: /usr/lib64/tengine/modules/ngx_http_statsd.so: error: symbol lookup error: undefined symbol: ngx_conf_set_num_slot (continued)
undefined symbol: ngx_conf_set_num_slot (/usr/lib64/tengine/modules/ngx_http_statsd.so)
Unused direct dependencies:

/usr/lib64/libssl.so.10
@higkoo
Copy link
Contributor Author

higkoo commented Aug 22, 2014

zebrafishlabs/nginx-statsd#11 fixed,thanks.

@higkoo higkoo closed this as completed Aug 22, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant