Re: stats socket problem

From: Martin Karbon <martin.karbon#asbz.it>
Date: Thu, 22 Jan 2009 01:01:56 +0100


Quoting Willy Tarreau <w#1wt.eu>:

> On Wed, Jan 21, 2009 at 09:43:58PM +0100, Martin Karbon wrote:
>> Quoting Willy Tarreau <w#1wt.eu>:
>>
>> Hi Willy, thanks for the fast reply
>> >Hi Martin,
>> >
>> >On Wed, Jan 21, 2009 at 12:13:35PM +0100, Martin Karbon wrote:
>> >>Hi
>> >>I am relatively new to this great software and I am having problems
>> >>with the feature stats socket. it won't write the haproxy.stat file no
>> >>matter what. so I cannot run the "socat".
>> >>root#lb1:~# echo "show stat" | socat unix-connect:/var/run/haproxy.stat
>> >>stdio
>> >>2009/01/21 12:12:54 socat[4887] E connect(3, AF=1
>> >>"/var/run/haproxy.stat", 23): No such file or directory
>> >>I wanted to try to write some script that checks the connection
>> >>distribution every n seconds (i.e.for a monitoring tool)... any advice
>> >>for this?
>> >
>> >I see nothing wrong in your config. It's so simple! Could you check a
>> >few things, such as if something already exists in /var/run, if you see
>> >a symbolic link or anything like this which might explain such a strange
>> >behaviour.
>>
>> As far as I can see no symbolic link in here...just pid files and some dirs
>>
>> >Also, it would be nice if you could start haproxy under strace :
>> >
>> ># strace -o /tmp/haproxy-start.log haproxy -db -f /etc/haproxy.cfg
>> >
>> >Then press Ctrl-C after a few seconds, and look for "haproxy.stat"
>> >in the output file (or post the result here). I think we'll find
>> >the reason there. There must be an error somewhere, or there is
>> >something disabling the stats but I don't see what can do that.
>> >
>> >Regards,
>> >Willy
>>
>> here is the output of the strace (note: this is a virtual machine I
>> have at home, same installation as the "original" one)
>
> (...)
>
> now that's rather intriguing. There's no trace of the socket at all.
> Just as if the "stats" line was ignored.
>
> What version of haproxy do you have ? (haproxy -vv)

root#lobalix01:/etc# haproxy -vv
HA-Proxy version 1.3.12 2007/06/17
Copyright 2000-2007 Willy Tarreau <w#1wt.eu

> Could you add an error on the "stats" line (insert "foobar" before
> "socket") so that you can verify haproxy complains ? If it does
> not complain, could you retype the line or at least add one line
> with "stats foobar" in order to get the parsing error ?
>
> I'm realizing that I generally add the "stats socket" line
> approximately as the last line of the global section. While
> it would appear stupid to me, could you please move this line
> at the end of the section ? Maybe there's a long standing bug
> caused by another parameter clearing this one (but once again,
> I'd find that a bit strange).
>
> I prefer easily reproducible errors like this one to non-
> deterministic ones !
>
> Regards,
> Willy

root#lobalix01:/etc# cat /etc/haproxy.cfg global

         log 127.0.0.1   local0
         log 127.0.0.1   local1 notice
         maxconn 4096
         user haproxy
         group haproxy
	stats fooabove socket /var/run/haproxy.above
	stats socket /var/run/haproxy.stat mode 600
	stats foobelow socket /var/run/haproxy.below
...

when I start
root#lobalix01:/etc# strace -o /tmp/haproxy-start.log haproxy -db -f /etc/haproxy.cfg
no parsing error is shown, whereas the trace is as follows

root#lobalix01:/etc# cat /tmp/haproxy-start.log execve("/usr/sbin/haproxy", ["haproxy", "-db", "-f", "/etc/haproxy.cfg"], [/* 18 vars */]) = 0

brk(0)                                  = 0x8072000
access("/etc/ld.so.nohwcap", F_OK)      = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f14000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=17937, ...}) = 0 mmap2(NULL, 17937, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f0f000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = 0
open("/usr/lib/libpcreposix.so.3", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\6\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=5280, ...}) = 0 mmap2(NULL, 8112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f0d000
mmap2(0xb7f0e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb7f0e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = 0
open("/usr/lib/libpcre.so.3", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\16"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=157240, ...}) = 0 mmap2(NULL, 156036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ee6000
mmap2(0xb7f0c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26) = 0xb7f0c000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1274092, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ee5000
mmap2(NULL, 1279600, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dac000
mmap2(0xb7edf000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x133) = 0xb7edf000 mmap2(0xb7ee2000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7ee2000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dab000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7dab6b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0xb7edf000, 4096, PROT_READ) = 0 munmap(0xb7f0f000, 17937) = 0 gettimeofday({1232582050, 620609}, NULL) = 0
brk(0)                                  = 0x8072000
brk(0x8093000)                          = 0x8093000
open("/etc/localtime", O_RDONLY)        = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f13000
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\6\0\0"..., 4096) = 2652
_llseek(3, -28, [2624], SEEK_CUR) = 0 read(3, "\nCET-1CEST,M3.5.0,M10.5.0/3\n", 4096) = 28
close(3)                                = 0
munmap(0xb7f13000, 4096)                = 0
getpid()                                = 4334
uname({sys="Linux", node="lobalix01", ...}) = 0
open("/etc/haproxy.cfg", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=744, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f13000
read(3, "global\n        log 127.0.0.1   l"..., 4096) = 744
socket(PF_FILE, SOCK_STREAM, 0)         = 4
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = 0 send(4, "\2\0\0\0\v\0\0\0\7\0\0\0passwd\0", 19, MSG_NOSIGNAL) = 19 poll([{fd=4, events=POLLIN|POLLERR|POLLHUP, revents=POLLIN|POLLHUP}], 1, 5000) = 1
recvmsg(4, {msg_name(0)=NULL, msg_iov(2)=[{"passwd\0", 7}, {"\270O\3\0\0\0\0\0", 8}], msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, {5}}, msg_flags=0x40000000 /* MSG_??? */}, 0x40000000 /* MSG_??? */) = 15
mmap2(NULL, 217016, PROT_READ, MAP_SHARED, 5, 0) = 0xb7d76000
close(5)                                = 0
close(4)                                = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 4
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = 0 send(4, "\2\0\0\0\f\0\0\0\6\0\0\0group\0", 18, MSG_NOSIGNAL) = 18 poll([{fd=4, events=POLLIN|POLLERR|POLLHUP, revents=POLLIN|POLLHUP}], 1, 5000) = 1
recvmsg(4, {msg_name(0)=NULL, msg_iov(2)=[{"group\0", 6}, {"\270O\3\0\0\0\0\0", 8}], msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, {5}}, msg_flags=0x40000000 /* MSG_??? */}, 0x40000000 /* MSG_??? */) = 14
mmap2(NULL, 217016, PROT_READ, MAP_SHARED, 5, 0) = 0xb7d41000
close(5)                                = 0
close(4)                                = 0
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f13000, 4096)                = 0
gettimeofday({1232582050, 648208}, NULL) = 0 mmap2(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d10000
rt_sigaction(SIGQUIT, {0x8049c40, [QUIT], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGUSR1, {0x8049f00, [USR1], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGHUP, {0x8049c60, [HUP], SA_RESTART}, {SIG_DFL}, 8) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 fcntl64(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 bind(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("192.168.1.210")}, 16) = 0
listen(3, 2000)                         = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 4
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2652, ...}) = 0 sendto(4, "<141>Jan 22 00:54:10 haproxy[433"..., 56, MSG_DONTWAIT|MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(514), sin_addr=inet_addr("127.0.0.1")}, 16) = 56 sendto(4, "<133>Jan 22 00:54:10 haproxy[433"..., 56, MSG_DONTWAIT|MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(514),
sin_addr=inet_addr("127.0.0.1")}, 16) = 56
rt_sigaction(SIGTTOU, {0x8049ed0, [TTOU], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTTIN, {0x8049eb0, [TTIN], SA_RESTART}, {SIG_DFL}, 8) = 0
setrlimit(RLIMIT_NOFILE, {rlim_cur=8205, rlim_max=8205}) = 0
setgid32(113)                           = 0
setuid32(105)                           = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=8205, rlim_max=8205}) = 0 gettimeofday({1232582050, 660282}, NULL) = 0 select(4, [3], NULL, NULL, {1, 996926}) = 0 (Timeout) gettimeofday({1232582052, 659017}, NULL) = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 5 fcntl64(5, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0 connect(5, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("192.168.1.123")}, 16) = -1 EINPROGRESS (Operation now in progress)
select(6, [3], [5], NULL, {0, 998191}) = ? ERESTARTNOHAND (To be restarted) --- SIGINT (Interrupt) @ 0 (0) ---
+++ killed by SIGINT +++
root#lobalix01:/etc# cat /tmp/haproxy-start.log | grep -i foo root#lobalix01:/etc#

you thinking the version being the problem ? This is the version I get from ubuntus repositories ...

Martin



This message was sent using IMP, the Internet Messaging Program. Received on 2009/01/22 01:01

This archive was generated by hypermail 2.2.0 : 2009/01/22 01:15 CET