Paris Monitoring meetup #1 - Zabbix at BlaBlaCar

Paris Monitoring meetup #1 - Zabbix at BlaBlaCar

How we use Zabbix at BlaBlaCar. What we did to be able to deal with >25k items, >300 values per second & >6.5k triggers
- Trappers everywhere
- Low level discovery
- python-protobix
- jmx-zabbix

Ddc5d7c41122d07af7239366e8b1c33d?s=128

Jean Baptiste Favre

June 04, 2015
Tweet

Transcript

  1. at

  2. Who am I ? Ops Lead @BlaBlaCar @jbfavre http://{blog,www}.jbfavre.org

  3. Agenda •BlaBlaCar ? •Zabbix • (very quick) introduction • at

    BlaBlaCar •python-protobix •Jmx-zabbix
  4. BlaBlaCar BlaBlaCar

  5. BlaBlaCar BlaBlaCar

  6. Zabbix •Server / Proxy / Agent •3 ways to get

    items • Agent • Agent (active) • Trappers •SNMP •JMX
  7. Zabbix •Many other (very) cool features like • Low Level

    Discovery • VmWare monitoring • Web Scenario
  8. Zabbix 25k items Biggest host>1k items

  9. Zabbix at BlaBlaCar •~ 200 hosts •~ 6.5k triggers •75

    templates
  10. Standardization Standardization

  11. Standardization As few zabbix-agent items as possible Zabbix-agent (active) triggers

    a script
  12. Standardization All probes written in Python Easy to maintain Widely

    deployed on systems Or Java When accurate Use LLD wherever possible Avoid template duplication Only 2 zabbix-agent (active) items Triggers script to update items Triggers script for LLD
  13. python-protobix python-protobix

  14. python-protobix At first A personal project to learn Python What

    it is now Unified way of dealing with trappers https://github.com/jbfavre/python-protobix (Soon on pypi.python.org)
  15. python-protobix Support LLD #!/usr/bin/env python import protobix ''' create DataContainer,

    providing data_type, zabbix server and port ''' zbx_container = protobix.DataContainer('lld', 'localhost', 10051) hostname='myhost' item='hardware.power_supply' value=[ { '{#SLOT}': 0, '{#PLUGGED}' : 1 }, { '{#SLOT}': 1, '{#PLUGGED}' : 0 }, ] zbx_container.add_item( hostname, item, value) try: zbx_response = zbx_container.send(zbx_container) except protobix.SenderException: print 'Oups...'