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 cant reproduce > your error. Theres 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® Conference 2012 > Save $700 by Nov 18 > Register now! > 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