Ad Widget

Collapse

Zabbix custom LLD to obtain passenger performance counters

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • frankcheong
    Member
    • Oct 2009
    • 73

    #1

    Zabbix custom LLD to obtain passenger performance counters

    I have written a python script to parse the passenger-status output while I need to setup LLD for the number of process that passenger is running.

    [root@ip-10-1-1-1 cronjob]# ./passenger_status.py discovery trapper
    - passenger.threads.discovery {"data": [{"{#THREADNO}":"1"},{"{#THREADNO}":"2"},{"{#THREAD NO}":"3"},{"{#THREADNO}":"4"},{"{#THREADNO}":"5"}, {"{#THREADNO}":"6"},{"{#THREADNO}":"7"},{"{#THREAD NO}":"8"}]}

    Then I have tried to send the discover to zabbix server using zabbix trapper as:-

    Code:
    #!/bin/bash
    
    export HOME=/usr/cronjob
    tmpFile=`/bin/mktemp`
    $HOME/passenger_status.py discovery trapper > ${tmpFile}
    /usr/bin/zabbix_sender -vv -c /etc/zabbix/zabbix_agentd.conf -i ${tmpFile}
    rm ${tmpFile}
    And then I setup a discovery rule

    When I run the command, it success:-

    [root@ip-10-1-1-1 cronjob]# ./passenger_discovery.sh
    zabbix_sender [12836]: DEBUG: answer [{
    "response":"success",
    "info":"processed: 1; failed: 0; total: 1; seconds spent: 0.010336"}]
    info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.010336"
    sent: 1; skipped: 0; total: 1

    Then I assume everything is OK, and then I setup some testing key.

    And then I tried to send the server some data for testing.

    [root@ip-10-1-1-1 cronjob]# ./passenger_status.sh
    zabbix_sender [13041]: DEBUG: answer [{
    "response":"success",
    "info":"processed: 0; failed: 250; total: 250; seconds spent: 0.002045"}]
    info from server: "processed: 0; failed: 250; total: 250; seconds spent: 0.002045"
    zabbix_sender [13042]: DEBUG: answer [{
    "response":"success",
    "info":"processed: 0; failed: 46; total: 46; seconds spent: 0.000431"}]
    info from server: "processed: 0; failed: 46; total: 46; seconds spent: 0.000431"
    sent: 296; skipped: 0; total: 296

    It simply tell me that no key were being accepted.

    Then I read from the internet that discovery won't work with sender? Is that true? But anyway, I also performed some changes which is to include the discovery inside the UserParam to be monitored with zabbix_agent but it didn't work as well.

    But I have saw from the internet that there are a lot of successful case with custom LLD, what have I done wrong? The zabbix version that I am using is 2.2.8, would that be a possible cause?
  • frankcheong
    Member
    • Oct 2009
    • 73

    #2
    I setup a discovery rule



    I also setup some testing key

    Comment

    • frankcheong
      Member
      • Oct 2009
      • 73

      #3
      This is what I sent thru the zabbix_sender

      [root@ip-10-1-1-1 cronjob]# ./passenger_status.py
      - passenger.threads[7,free_request_count] 1
      - passenger.threads[7,active_client_count] 0
      - passenger.threads[7,disconnected_client_count] 0
      - passenger.threads[7,request_begin_speed.1h.value] 0.52
      - passenger.threads[7,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[7,request_begin_speed.1h.per] minute
      - passenger.threads[7,request_begin_speed.1m.value] 0.17
      - passenger.threads[7,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[7,request_begin_speed.1m.per] minute
      - passenger.threads[7,server_state] ACTIVE
      - passenger.threads[7,pid] 2745
      - passenger.threads[7,total_requests_begun] 227
      - passenger.threads[7,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[7,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[7,mbuf_pool.chunk_size] 4096
      - passenger.threads[7,mbuf_pool.active_blocks] 0
      - passenger.threads[7,mbuf_pool.spare_memory.human_readable] 16.0 KB
      - passenger.threads[7,mbuf_pool.spare_memory.bytes] 16384
      - passenger.threads[7,mbuf_pool.free_blocks] 4
      - passenger.threads[7,mbuf_pool.offset] 4048
      - passenger.threads[7,peak_active_client_count] 1
      - passenger.threads[7,client_accept_speed.1h.value] 0.52
      - passenger.threads[7,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[7,client_accept_speed.1h.per] minute
      - passenger.threads[7,client_accept_speed.1m.value] 0.17
      - passenger.threads[7,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[7,client_accept_speed.1m.per] minute
      - passenger.threads[7,turbocaching.hits] 0
      - passenger.threads[7,turbocaching.stores] 0
      - passenger.threads[7,turbocaching.hit_ratio] None
      - passenger.threads[7,turbocaching.fetches] 0
      - passenger.threads[7,turbocaching.store_successes] 0
      - passenger.threads[7,turbocaching.store_success_ratio] None
      - passenger.threads[7,total_clients_accepted] 227
      - passenger.threads[7,free_client_count] 128
      - passenger.threads[7,disconnected_clients] {}
      - passenger.threads[7,total_bytes_consumed] 958013
      - passenger.threads[6,free_request_count] 2
      - passenger.threads[6,active_client_count] 0
      - passenger.threads[6,disconnected_client_count] 0
      - passenger.threads[6,request_begin_speed.1h.value] 0.51
      - passenger.threads[6,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[6,request_begin_speed.1h.per] minute
      - passenger.threads[6,request_begin_speed.1m.value] 0.17
      - passenger.threads[6,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[6,request_begin_speed.1m.per] minute
      - passenger.threads[6,server_state] ACTIVE
      - passenger.threads[6,pid] 2745
      - passenger.threads[6,total_requests_begun] 227
      - passenger.threads[6,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[6,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[6,mbuf_pool.chunk_size] 4096
      - passenger.threads[6,mbuf_pool.active_blocks] 0
      - passenger.threads[6,mbuf_pool.spare_memory.human_readable] 36.0 KB
      - passenger.threads[6,mbuf_pool.spare_memory.bytes] 36864
      - passenger.threads[6,mbuf_pool.free_blocks] 9
      - passenger.threads[6,mbuf_pool.offset] 4048
      - passenger.threads[6,peak_active_client_count] 2
      - passenger.threads[6,client_accept_speed.1h.value] 0.51
      - passenger.threads[6,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[6,client_accept_speed.1h.per] minute
      - passenger.threads[6,client_accept_speed.1m.value] 0.17
      - passenger.threads[6,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[6,client_accept_speed.1m.per] minute
      - passenger.threads[6,turbocaching.hits] 0
      - passenger.threads[6,turbocaching.stores] 0
      - passenger.threads[6,turbocaching.hit_ratio] None
      - passenger.threads[6,turbocaching.fetches] 0
      - passenger.threads[6,turbocaching.store_successes] 0
      - passenger.threads[6,turbocaching.store_success_ratio] None
      - passenger.threads[6,total_clients_accepted] 227
      - passenger.threads[6,free_client_count] 128
      - passenger.threads[6,disconnected_clients] {}
      - passenger.threads[6,total_bytes_consumed] 963403
      - passenger.threads[5,free_request_count] 1
      - passenger.threads[5,active_client_count] 0
      - passenger.threads[5,disconnected_client_count] 0
      - passenger.threads[5,request_begin_speed.1h.value] 0.5
      - passenger.threads[5,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[5,request_begin_speed.1h.per] minute
      - passenger.threads[5,request_begin_speed.1m.value] 0.04
      - passenger.threads[5,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[5,request_begin_speed.1m.per] minute
      - passenger.threads[5,server_state] ACTIVE
      - passenger.threads[5,pid] 2745
      - passenger.threads[5,total_requests_begun] 227
      - passenger.threads[5,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[5,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[5,mbuf_pool.chunk_size] 4096
      - passenger.threads[5,mbuf_pool.active_blocks] 0
      - passenger.threads[5,mbuf_pool.spare_memory.human_readable] 16.0 KB
      - passenger.threads[5,mbuf_pool.spare_memory.bytes] 16384
      - passenger.threads[5,mbuf_pool.free_blocks] 4
      - passenger.threads[5,mbuf_pool.offset] 4048
      - passenger.threads[5,peak_active_client_count] 1
      - passenger.threads[5,client_accept_speed.1h.value] 0.5
      - passenger.threads[5,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[5,client_accept_speed.1h.per] minute
      - passenger.threads[5,client_accept_speed.1m.value] 0.04
      - passenger.threads[5,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[5,client_accept_speed.1m.per] minute
      - passenger.threads[5,turbocaching.hits] 0
      - passenger.threads[5,turbocaching.stores] 0
      - passenger.threads[5,turbocaching.hit_ratio] None
      - passenger.threads[5,turbocaching.fetches] 0
      - passenger.threads[5,turbocaching.store_successes] 0
      - passenger.threads[5,turbocaching.store_success_ratio] None
      - passenger.threads[5,total_clients_accepted] 227
      - passenger.threads[5,free_client_count] 128
      - passenger.threads[5,disconnected_clients] {}
      - passenger.threads[5,total_bytes_consumed] 959228
      - passenger.threads[4,free_request_count] 1
      - passenger.threads[4,active_client_count] 0
      - passenger.threads[4,disconnected_client_count] 0
      - passenger.threads[4,request_begin_speed.1h.value] 0.5
      - passenger.threads[4,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[4,request_begin_speed.1h.per] minute
      - passenger.threads[4,request_begin_speed.1m.value] 0.04
      - passenger.threads[4,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[4,request_begin_speed.1m.per] minute
      - passenger.threads[4,server_state] ACTIVE
      - passenger.threads[4,pid] 2745
      - passenger.threads[4,total_requests_begun] 227
      - passenger.threads[4,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[4,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[4,mbuf_pool.chunk_size] 4096
      - passenger.threads[4,mbuf_pool.active_blocks] 0
      - passenger.threads[4,mbuf_pool.spare_memory.human_readable] 16.0 KB
      - passenger.threads[4,mbuf_pool.spare_memory.bytes] 16384
      - passenger.threads[4,mbuf_pool.free_blocks] 4
      - passenger.threads[4,mbuf_pool.offset] 4048
      - passenger.threads[4,peak_active_client_count] 1
      - passenger.threads[4,client_accept_speed.1h.value] 0.5
      - passenger.threads[4,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[4,client_accept_speed.1h.per] minute
      - passenger.threads[4,client_accept_speed.1m.value] 0.04
      - passenger.threads[4,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[4,client_accept_speed.1m.per] minute
      - passenger.threads[4,turbocaching.hits] 0
      - passenger.threads[4,turbocaching.stores] 0
      - passenger.threads[4,turbocaching.hit_ratio] None
      - passenger.threads[4,turbocaching.fetches] 0
      - passenger.threads[4,turbocaching.store_successes] 0
      - passenger.threads[4,turbocaching.store_success_ratio] None
      - passenger.threads[4,total_clients_accepted] 227
      - passenger.threads[4,free_client_count] 128
      - passenger.threads[4,disconnected_clients] {}
      - passenger.threads[4,total_bytes_consumed] 958059
      - passenger.threads[3,free_request_count] 2
      - passenger.threads[3,active_client_count] 0
      - passenger.threads[3,disconnected_client_count] 0
      - passenger.threads[3,request_begin_speed.1h.value] 0.49
      - passenger.threads[3,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[3,request_begin_speed.1h.per] minute
      - passenger.threads[3,request_begin_speed.1m.value] 0.01
      - passenger.threads[3,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[3,request_begin_speed.1m.per] minute
      - passenger.threads[3,server_state] ACTIVE
      - passenger.threads[3,pid] 2745
      - passenger.threads[3,total_requests_begun] 227
      - passenger.threads[3,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[3,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[3,mbuf_pool.chunk_size] 4096
      - passenger.threads[3,mbuf_pool.active_blocks] 0
      - passenger.threads[3,mbuf_pool.spare_memory.human_readable] 32.0 KB
      - passenger.threads[3,mbuf_pool.spare_memory.bytes] 32768
      - passenger.threads[3,mbuf_pool.free_blocks] 8
      - passenger.threads[3,mbuf_pool.offset] 4048
      - passenger.threads[3,peak_active_client_count] 2
      - passenger.threads[3,client_accept_speed.1h.value] 0.49
      - passenger.threads[3,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[3,client_accept_speed.1h.per] minute
      - passenger.threads[3,client_accept_speed.1m.value] 0.01
      - passenger.threads[3,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[3,client_accept_speed.1m.per] minute
      - passenger.threads[3,turbocaching.hits] 0
      - passenger.threads[3,turbocaching.stores] 0
      - passenger.threads[3,turbocaching.hit_ratio] None
      - passenger.threads[3,turbocaching.fetches] 0
      - passenger.threads[3,turbocaching.store_successes] 0
      - passenger.threads[3,turbocaching.store_success_ratio] None
      - passenger.threads[3,total_clients_accepted] 227
      - passenger.threads[3,free_client_count] 128
      - passenger.threads[3,disconnected_clients] {}
      - passenger.threads[3,total_bytes_consumed] 961680
      - passenger.threads[2,free_request_count] 2
      - passenger.threads[2,active_client_count] 0
      - passenger.threads[2,disconnected_client_count] 0
      - passenger.threads[2,request_begin_speed.1h.value] 0.49
      - passenger.threads[2,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[2,request_begin_speed.1h.per] minute
      - passenger.threads[2,request_begin_speed.1m.value] 0.01
      - passenger.threads[2,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[2,request_begin_speed.1m.per] minute
      - passenger.threads[2,server_state] ACTIVE
      - passenger.threads[2,pid] 2745
      - passenger.threads[2,total_requests_begun] 227
      - passenger.threads[2,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[2,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[2,mbuf_pool.chunk_size] 4096
      - passenger.threads[2,mbuf_pool.active_blocks] 0
      - passenger.threads[2,mbuf_pool.spare_memory.human_readable] 36.0 KB
      - passenger.threads[2,mbuf_pool.spare_memory.bytes] 36864
      - passenger.threads[2,mbuf_pool.free_blocks] 9
      - passenger.threads[2,mbuf_pool.offset] 4048
      - passenger.threads[2,peak_active_client_count] 2
      - passenger.threads[2,client_accept_speed.1h.value] 0.49
      - passenger.threads[2,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[2,client_accept_speed.1h.per] minute
      - passenger.threads[2,client_accept_speed.1m.value] 0.01
      - passenger.threads[2,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[2,client_accept_speed.1m.per] minute
      - passenger.threads[2,turbocaching.hits] 0
      - passenger.threads[2,turbocaching.stores] 0
      - passenger.threads[2,turbocaching.hit_ratio] None
      - passenger.threads[2,turbocaching.fetches] 0
      - passenger.threads[2,turbocaching.store_successes] 0
      - passenger.threads[2,turbocaching.store_success_ratio] None
      - passenger.threads[2,total_clients_accepted] 227
      - passenger.threads[2,free_client_count] 128
      - passenger.threads[2,disconnected_clients] {}
      - passenger.threads[2,total_bytes_consumed] 982992
      - passenger.threads[1,free_request_count] 1
      - passenger.threads[1,active_client_count] 0
      - passenger.threads[1,disconnected_client_count] 0
      - passenger.threads[1,request_begin_speed.1h.value] 0.53
      - passenger.threads[1,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[1,request_begin_speed.1h.per] minute
      - passenger.threads[1,request_begin_speed.1m.value] 0.76
      - passenger.threads[1,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[1,request_begin_speed.1m.per] minute
      - passenger.threads[1,server_state] ACTIVE
      - passenger.threads[1,pid] 2745
      - passenger.threads[1,total_requests_begun] 228
      - passenger.threads[1,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[1,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[1,mbuf_pool.chunk_size] 4096
      - passenger.threads[1,mbuf_pool.active_blocks] 0
      - passenger.threads[1,mbuf_pool.spare_memory.human_readable] 16.0 KB
      - passenger.threads[1,mbuf_pool.spare_memory.bytes] 16384
      - passenger.threads[1,mbuf_pool.free_blocks] 4
      - passenger.threads[1,mbuf_pool.offset] 4048
      - passenger.threads[1,peak_active_client_count] 1
      - passenger.threads[1,client_accept_speed.1h.value] 0.53
      - passenger.threads[1,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[1,client_accept_speed.1h.per] minute
      - passenger.threads[1,client_accept_speed.1m.value] 0.76
      - passenger.threads[1,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[1,client_accept_speed.1m.per] minute
      - passenger.threads[1,turbocaching.hits] 0
      - passenger.threads[1,turbocaching.stores] 0
      - passenger.threads[1,turbocaching.hit_ratio] None
      - passenger.threads[1,turbocaching.fetches] 0
      - passenger.threads[1,turbocaching.store_successes] 0
      - passenger.threads[1,turbocaching.store_success_ratio] None
      - passenger.threads[1,total_clients_accepted] 228
      - passenger.threads[1,free_client_count] 128
      - passenger.threads[1,disconnected_clients] {}
      - passenger.threads[1,total_bytes_consumed] 962163
      - passenger.threads[8,free_request_count] 1
      - passenger.threads[8,active_client_count] 0
      - passenger.threads[8,disconnected_client_count] 0
      - passenger.threads[8,request_begin_speed.1h.value] 0.52
      - passenger.threads[8,request_begin_speed.1h.averaged_over] 1 hour
      - passenger.threads[8,request_begin_speed.1h.per] minute
      - passenger.threads[8,request_begin_speed.1m.value] 0.76
      - passenger.threads[8,request_begin_speed.1m.averaged_over] 1 minute
      - passenger.threads[8,request_begin_speed.1m.per] minute
      - passenger.threads[8,server_state] ACTIVE
      - passenger.threads[8,pid] 2745
      - passenger.threads[8,total_requests_begun] 227
      - passenger.threads[8,mbuf_pool.active_memory.human_readable] 0 bytes
      - passenger.threads[8,mbuf_pool.active_memory.bytes] 0
      - passenger.threads[8,mbuf_pool.chunk_size] 4096
      - passenger.threads[8,mbuf_pool.active_blocks] 0
      - passenger.threads[8,mbuf_pool.spare_memory.human_readable] 16.0 KB
      - passenger.threads[8,mbuf_pool.spare_memory.bytes] 16384
      - passenger.threads[8,mbuf_pool.free_blocks] 4
      - passenger.threads[8,mbuf_pool.offset] 4048
      - passenger.threads[8,peak_active_client_count] 1
      - passenger.threads[8,client_accept_speed.1h.value] 0.52
      - passenger.threads[8,client_accept_speed.1h.averaged_over] 1 hour
      - passenger.threads[8,client_accept_speed.1h.per] minute
      - passenger.threads[8,client_accept_speed.1m.value] 0.76
      - passenger.threads[8,client_accept_speed.1m.averaged_over] 1 minute
      - passenger.threads[8,client_accept_speed.1m.per] minute
      - passenger.threads[8,turbocaching.hits] 0
      - passenger.threads[8,turbocaching.stores] 0
      - passenger.threads[8,turbocaching.hit_ratio] None
      - passenger.threads[8,turbocaching.fetches] 0
      - passenger.threads[8,turbocaching.store_successes] 0
      - passenger.threads[8,turbocaching.store_success_ratio] None
      - passenger.threads[8,total_clients_accepted] 227
      - passenger.threads[8,free_client_count] 128
      - passenger.threads[8,disconnected_clients] {}
      - passenger.threads[8,total_bytes_consumed] 957431

      Comment

      • nobodysu
        Member
        • Sep 2016
        • 84

        #4
        First of all: always quote your values:
        Code:
        - passenger.threads[7,request_begin_speed.1h.value] "0.52"
        - passenger.threads[7,request_begin_speed.1h.averaged_over] "1 hour"
        and maybe you want to translate your hours and minutes to seconds?

        Second: your example item configured as numeric. But "0.52" is decimal and "1 hour" is text (log).

        Third: "-" means hostname will be taken from agent config file. Is it present there?

        Fourth: did this item
        Code:
        passenger.threads[7,free_request_count]
        exists on host at the moment of sending?

        Comment

        • frankcheong
          Member
          • Oct 2009
          • 73

          #5
          This is the list of item prototypes



          Except the first one is float, other is decimal.
          Last edited by frankcheong; 17-01-2017, 13:42.

          Comment

          • frankcheong
            Member
            • Oct 2009
            • 73

            #6
            Yeah, you are right, it works when I set them all the character. But actually they are decimal and some of them are even float.

            Comment

            • frankcheong
              Member
              • Oct 2009
              • 73

              #7
              finally I know why, bcoz the way how zabbix works.... coz some of the reading for some thread result in None.... (bcoz I parse using python) and zabbix got this and rejected the same key for all other thread even though they are valid no..... I have modified the python script so that it will return a 0 in case the setting is None in python. Now it works. Thx very much for everyone's help. Although I am not fully understand why, while the key is filter and regex got to be empty.

              Comment

              Working...