Hi,

as you can see from the screenshot, accents are no problem in the Thruk gui.
That is because it uses OutputFormat:json in the livestatus queries. And the
json module seems to handle these special characters automagically.
Now i made this:

         stdout_encoding = sys.getdefaultencoding()
...
                        elif isinstance(x, basestring):
                            l.append(x.encode(stdout_encoding, 'replace'))
                        else:
                            l.append(str(x)) 

when i run the broker as a daemon, stdout_encoding is "ascii", so this code
is practically the same as your "dirty" workaround. You should see your
accents.

Gerhard


> -----Ursprüngliche Nachricht-----
> Von: Denis GERMAIN [mailto:dt.germ...@gmail.com] 
> Gesendet: Donnerstag, 8. Dezember 2011 14:56
> An: shinken-devel@lists.sourceforge.net
> Betreff: Re: [Shinken-devel] Slight problem with livestatus 
> module withdirect queries
> 
> For now i used the following workaround, which is really 
> dirty but seems to work. I post it in case someone uses it 
> also (even though it's highly improbable)
> 
> 
> cd /usr/lib/python2.6/site-packages/shinken/modules/livestatus_broker/
> cp livestatus_response.py  livestatus_response.py.old
> vi livestatus_response.py 
> line 92
> --                            l.append(str(x))
> ++                            if type(x) == int:
> ++                                l.append(str(x))
> ++                            else:
> ++                                x = x.encode('ascii', 'replace')
> ++                                l.append(str(x))
> I had to make a difference between int which don't have the 
> .encode() method and string types
> 
> Denis GERMAIN
> 
> 
> 2011/12/7 Denis GERMAIN <dt.germ...@gmail.com>
> 
> 
>       Hi,
>       
>       I have a new issue, partly related to this script. The 
> script in itself is now working fine, thanks to your 
> modifications, but we are getting a Traceback on Livestatus 
> broker because we have special French caracters in our 
> comments for hosts down (é, è, à, etc...)
>       
>       This didn't happen before because we couldn't add these 
> caracters at all in Livestatus until our last Shinken upgrade 
> (there has been some additions to prevent these to create 
> bugs in the latest version of Shinken)
>       
>       I don't know what kind of "protection" has been added 
> in the code to prevent these special caracters from crashing 
> the broker, but if I knew it I could add it here also, in 
> order to avoid the error I have here (see attached traceback)
>       
>       Regards
>       
>       Denis GERMAIN
> 
> 
>       2011/11/3 Denis GERMAIN <dt.germ...@gmail.com>
>       
> 
>               Hi
>               
>               This indeed seems to be a valid solution, I 
> launched it many times, with no more issue on the broker. I'm 
> going to put back my script in production, thanks to your help.
>               
>               Many thanks Gerhard
>               
>               Denis
>               
>               
>               2011/11/2 Gerhard Lausser <gerhard.laus...@consol.de>
>               
> 
>                       Hi,
> 
>                        
> 
>                       maybe the Nagios livestatus module is 
> more robust. I took your script and it crashed, but only when 
> I had hosts without a comment. I rewrote it a little bit and 
> it works now (CentOS5.6,64,Python 2.4.3)
> 
>                        
> 
>                       def main_function():
> 
>                               host_table = send_query("GET 
> hosts\nFilter: state = 0\nColumns: name 
> comments\nOutputFormat: csv\n")
> 
>                               for host in host_table:
> 
>                                       host_name, 
> host_comment_ids = host
> 
>                        
> 
>                                       try:
> 
>                                           
> host_last_comment_id = host_comment_ids.split(',')[-1] #use 
> only last comment 
> 
>                                           
> host_last_comment_id = str(int(host_last_comment_id))  # if 
> it is not a number (or empty), then it raises an exception
> 
>                                           comment = 
> send_query("GET comments\nColumns: comment_id 
> comment\nFilter: comment_id = "+host_last_comment_id+"\n")
> 
>                                           print comment
> 
>                                       except Exception:
> 
>                                           print host_name + " 
> has no comments"
> 
>                        
> 
>                       OMD[denis]:~$ python denis.py 
> 
>                       [['16', 'kaas']]
> 
>                       [['2', 'schmarrn']]
> 
>                       omd11 has no comments
> 
>                       [['4', 'schmarrn']]
> 
>                       [['5', 'schmarrn']]
> 
>                       [['6', 'schmarrn']]
> 
>                       [['7', 'schmarrn']]
> 
>                       [['17', 'kaas-omd-2']]
> 
>                       [['9', 'schmarrn']]
> 
>                       [['10', 'schmarrn']]
> 
>                       [['11', 'schmarrn']]
> 
>                       [['12', 'schmarrn']]
> 
>                       [['13', 'schmarrn']]
> 
>                       [['14', 'schmarrn']]
> 
>                       [['15', 'schmarrn']]
> 
>                        
> 
>                       Even if I add lots of main_function() 
> calls to the script, I get valid output.
> 
>                       Can you please try it with my modifications?
> 
>                        
> 
>                       Gerhard
> 
>                        
> 
>                       Von: Denis GERMAIN 
> [mailto:dt.germ...@gmail.com] 
>                       Gesendet: Mittwoch, 2. November 2011 18:08
>                       An: shinken-devel@lists.sourceforge.net
>                       Betreff: Re: [Shinken-devel] Slight 
> problem with livestatus module with direct queries
> 
>                        
> 
>                       Hi again,
>                       
>                       I might have been a little optimistic, 
> because my prod crashed again.
>                       
>                       This time I used python code which has 
> been adapted from the website from Livestatus conceptor, so I 
> guess that this time the queries are correctly done
>                       
>                       This error is really strange, because 
> it seems to be realted to the number of request I do in a 
> short period of time. I managed to reproduce the error on my 
> dev environment *relief*. Here, everything works fine until 
> the broker crashes.
>                       
>                       I might be totally wrong here as I 
> don't know much of Livestatus coding in Shinken, but is it 
> possible that the maximum number of socket has been reached 
> or something like that?
>                       
>                       Attached, you can see the scenario I 
> used to reproduce the error :
>                       I first added comments on running hosts 
> (in order to have a certain amount of hosts with comments on them)
>                       Then I launched my script
>                       Livestatus answered correctly for some 
> hosts, then crashed, like on prod env
>                       
>                       If this is indeed a problem with max 
> number of sockets in livestatus module, I could recode my 
> script in order to avoid making too many queries (getting all 
> hosts, then getting all comments, only 2 queries here), but 
> I'd like to be sure it's really that in order to avoid 
> further issues on prod environnement
>                       
>                       Regards
>                       
>                       Denis GERMAIN
> 
>                       2011/10/27 Olivier Hanesse 
> <olivier.hane...@gmail.com>
> 
>                       hi,
> 
>                        
> 
>                       I used to work with netcat too, and I 
> got some issues in the past with some netcat version.
> 
>                       On debian for example, you have 2 versions : 
> 
>                        
> 
>                       netcat-openbsd - TCP/IP swiss army knife
> 
>                       netcat-traditional - TCP/IP swiss army knife
> 
>                        
> 
>                       One was working, but not the other one.
> 
>                       Maybe you could give a try and install 
> the other version.
> 
>                        
> 
>                       Regards
> 
>                        
> 
>                       Olivier
> 
>                        
> 
>                       2011/10/27 Denis GERMAIN <dt.germ...@gmail.com>
> 
>                       Hi,
>                       
>                       Thanks for the answer, I had forgotten 
> that we used netcat instead of unixcat. I have still to 
> confirm this, but i'm think we have a problem because we're 
> not correctly closing the connection with netcat.
>                       
>                       I'm going to code it in python in order 
> to do this in a proper way.
>                       
>                       I'll keep you posted if this is not the 
> issue but I'm pretty sure that this is our problem.
>                       
>                       Thanks!
>                       
>                       Denis
> 
>                       2011/10/26 Gerhard Lausser 
> <gerhard.laus...@consol.de>
> 
>                       Hi,
> 
>                        
> 
>                       which version of Shinken do you use?
> 
>                       I have here a 0.8 and can’t reproduce 
> your error. There’s one host (omd-disco) which I made DOWN by 
> submitting a passive command and which has two comments attached.
> 
>                        
> 
>                       OMD[disco]:~$  printf "GET 
> hosts\nFilter: state = 1\nColumns: name comments\n"|unixcat 
> /omd/sites/disco/tmp/run/live
> 
>                       omd-disco;3,4
> 
>                        
> 
>                       OMD[disco]:~$ printf 'GET 
> comments\nColumns: comment_id comment\n' | unixcat 
> /omd/sites/disco/tmp/run/live 
> 
>                       3;i bi hi
> 
>                       4;i kos ned oft gnou sogn, i bi hi
> 
>                        
> 
>                       OMD[disco]:~$ printf 'GET 
> comments\nColumns: comment_id comment\nFilter: comment_id = 
> 3\n' | unixcat /omd/sites/disco/tmp/run/live 
> 
>                       3;i bi hi
> 
>                        
> 
>                       Gerhard
> 
>                        
> 
>                        
> 
>                       Von: Denis GERMAIN 
> [mailto:dt.germ...@gmail.com] 
>                       Gesendet: Mittwoch, 26. Oktober 2011 16:40
>                       An: shinken-devel@lists.sourceforge.net
>                       Betreff: [Shinken-devel] Slight problem 
> with livestatus module with direct queries
> 
>                        
> 
>                       Hello list,
>                       
>                       For historic reporting purpose, we have 
> a developper in our team that directly execute queries to the 
> livestatus module via commands like
>                       printf 'GET hosts\nFilter: state = 1' | 
> nc 10.197.64.97 50000 > /data/ftptrace/nagios/thruk.txt
>                       printf 'GET comments\nFilter comment_id 
> = '$commid | nc 10.197.64.97 50000 | tail -1 | awk -F";" '{print $2}'
>                       
>                       This gives us informations about hosts 
> down which are then reformatted in a dusty old report sent to 
> our client.
>                       At the beginning we used only the first 
> request for our report, as comments were directly available 
> from the host information given by the query. After an 
> update, we didn't realised that the comments were not 
> directly in the query result, but only the comment ID (which 
> I grant you is much more "clean")
>                       
>                       1) Problem is that now, we need to 
> query for the comments (selecting good comment ID) and that 
> it constantly break livestatus module (which doesn't always 
> manage to relaunch itself)
>                       
>                       2) We also noted that when we use the 
> Column statement (to select only the columns we need), the 
> livestatus module instantly crash
>                       
>                       I realise that our problem is a little 
> exotic, as the vast majority of livestatus users only use it 
> through Thruk, but if something could be done (or as already 
> been done), we would be grateful (our developper mostly :-p)
>                       
>                       Denis GERMAIN
>                       
>                       PS: An example traceback. I don't have 
> much more yet, we are running Shinken on production (I 
> already see admins frowning eyes, but it's stable enough if 
> you don't try strange things like us) and my manager don't 
> really like us crashing it on purpose. We'll try to reproduce 
> on preproduction ASAP, but if this can help pinpointing the issue...
>                       
>                       [1319536549] [broker-1] Traceback (most 
> recent call last):
>                         File 
> "/usr/lib/python2.6/site-packages/shinken/modules/livestatus_b
roker/livestatus_broker.py", line 828, in main
>                           self.do_main()
>                         File 
> "/usr/lib/python2.6/site-packages/shinken/modules/livestatus_b
roker/livestatus_broker.py", line 1052, in do_main
>                           response, keepalive = 
> self.livestatus.handle_request(open_connections[socketid]['buffer'])
>                         File 
> "/usr/lib/python2.6/site-packages/shinken/modules/livestatus_b
roker/livestatus.py", line 129, in handle_request
>                           request.parse_input(data)
>                         File 
> "/usr/lib/python2.6/site-packages/shinken/modules/livestatus_b
roker/livestatus_request.py", line 96, in parse_input
>                           query.parse_input('\n'.join(query_cmds))
>                         File 
> "/usr/lib/python2.6/site-packages/shinken/modules/livestatus_b
roker/livestatus_query.py", line 259, in parse_input
>                           
self.filter_stack.put(self.make_filter(operator, attribute, > reference))
>                         File 
> "/usr/lib/python2.6/site-packages/shinken/modules/livestatus_b
roker/livestatus_query.py", line 786, in make_filter
>                           converter = self.find_converter(attribute)
>                         File 
> "/usr/lib/python2.6/site-packages/shinken/modules/livestatus_b
roker/livestatus_query.py", line 102, in find_converter
>                           out_map = LSout_map[self.out_map_name]
>                       KeyError: 'hosts'
> 
>                        
> 
>                       
> --------------------------------------------------------------
> ----------------
>                       The demand for IT networking 
> professionals continues to grow, and the
>                       demand for specialized networking 
> skills is growing even more rapidly.
>                       Take a complimentary Learning@Cisco 
> Self-Assessment and learn
>                       about Cisco certifications, training, 
> and career opportunities.
>                       http://p.sf.net/sfu/cisco-dev2dev
>                       _______________________________________________
>                       Shinken-devel mailing list
>                       Shinken-devel@lists.sourceforge.net
>                       
> https://lists.sourceforge.net/lists/listinfo/shinken-devel
> 
>                       
>                       
>                       
> --------------------------------------------------------------
> ----------------
>                       The demand for IT networking 
> professionals continues to grow, and the
>                       demand for specialized networking 
> skills is growing even more rapidly.
>                       Take a complimentary Learning@Cisco 
> Self-Assessment and learn
>                       about Cisco certifications, training, 
> and career opportunities.
>                       http://p.sf.net/sfu/cisco-dev2dev
>                       _______________________________________________
>                       Shinken-devel mailing list
>                       Shinken-devel@lists.sourceforge.net
>                       
> https://lists.sourceforge.net/lists/listinfo/shinken-devel
> 
>                        
> 
>                       
>                       
> --------------------------------------------------------------
> ----------------
>                       The demand for IT networking 
> professionals continues to grow, and the
>                       demand for specialized networking 
> skills is growing even more rapidly.
>                       Take a complimentary Learning@Cisco 
> Self-Assessment and learn
>                       about Cisco certifications, training, 
> and career opportunities.
>                       http://p.sf.net/sfu/cisco-dev2dev
>                       _______________________________________________
>                       Shinken-devel mailing list
>                       Shinken-devel@lists.sourceforge.net
>                       
> https://lists.sourceforge.net/lists/listinfo/shinken-devel
> 
>                        
> 
> 
>                       
> --------------------------------------------------------------
> ----------------
>                       RSA&#174; Conference 2012
>                       Save $700 by Nov 18
>                       Register now&#33;
>                       http://p.sf.net/sfu/rsa-sfdev2dev1
> 
>                       _______________________________________________
>                       Shinken-devel mailing list
>                       Shinken-devel@lists.sourceforge.net
>                       
> https://lists.sourceforge.net/lists/listinfo/shinken-devel
>                       
>                       
> 
> 
> 
> 
> 
> __________ Hinweis von ESET NOD32 Antivirus, 
> Signaturdatenbank-Version 6695 (20111208) __________
> 
> 
> E-Mail wurde geprüft mit ESET NOD32 Antivirus.
> 
> 
> http://www.eset.com
> 
> 
 

__________ Hinweis von ESET NOD32 Antivirus, Signaturdatenbank-Version 6695
(20111208) __________

E-Mail wurde geprüft mit ESET NOD32 Antivirus.

http://www.eset.com
 

<<attachment: umlaute.png>>

------------------------------------------------------------------------------
Cloud Services Checklist: Pricing and Packaging Optimization
This white paper is intended to serve as a reference, checklist and point of 
discussion for anyone considering optimizing the pricing and packaging model 
of a cloud services business. Read Now!
http://www.accelacomm.com/jaw/sfnl/114/51491232/
_______________________________________________
Shinken-devel mailing list
Shinken-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shinken-devel

Reply via email to