5.02021-11-21T22:02:56ZTemplatess 3CX ODBCs 3CX ODBC## Overview
This tempalte is used in 3CX linux servers, it is necessary to create a postgresql ODBC connector to perform the collections and to change the {$ DSN3CX} macro to the name of the created connector.
To check the DB credentials, I checked the file "/var/lib/3cxpbx/Bin/3CXSystemService.exe.config"
and edit pg\_hba.conf to release remote connections.
Note: only release the IP of the zabbix proxy or server for security reasons.
Itens:
- Discovery of trunks and extensions
- Calls today, 7 days and this month
Extensions:
- User Extension Last Register
- User Extension Status
- User First Name
- User Last Name
- User Mail
Trunks:
- Gateway Host
- Gateway Max Calls
- Gateway Port
- Number of associated routes
TemplatesCalls- Number of Calls in the last 7 daysODBCdb.odbc.select[calls.7days,{$DSN3CX}]5mSELECT count(id) FROM cl_calls where start_time >= current_date - interval '7 day';Calls
- Number of Calls in this monthODBCdb.odbc.select[calls.month,{$DSN3CX}]5mSELECT count(id) FROM cl_calls where start_time::text LIKE TO_CHAR(now(),'YYYY-mm-%');Calls
- Number of Calls TodayODBCdb.odbc.select[calls.total,{$DSN3CX}]5mSELECT count(id) FROM cl_calls where start_time >= current_date;Calls
Discovery GatewaysODBCdb.odbc.discovery[discovery.gws,{$DSN3CX}]1hSELECT idgateway, name, model, host, port,maxlines,gatewaytype FROM gateway;Gateway HostODBCdb.odbc.select[gw.host-{#IDGATEWAY},{$DSN3CX}]1h0TEXTSELECT host FROM gateway WHERE idgateway = '{#IDGATEWAY}';Gateway : {#NAME}Gateway Max CallsODBCdb.odbc.select[gw.max-calls-{#IDGATEWAY},{$DSN3CX}]1hSELECT maxcalls FROM externalline WHERE fkidgateway = '{#IDGATEWAY}';Gateway : {#NAME}Number of associated routesODBCdb.odbc.select[gw.number-routes-{#IDGATEWAY},{$DSN3CX}]1hSELECT COUNT (*) FROM outboundroute WHERE fkidgateway = '{#IDGATEWAY}';Gateway : {#NAME}Gateway PortODBCdb.odbc.select[gw.port-{#IDGATEWAY},{$DSN3CX}]1hSELECT port FROM gateway WHERE idgateway = '{#IDGATEWAY}';Gateway : {#NAME}Discovery UsersODBCdb.odbc.discovery[discovery.users,{$DSN3CX}]1hSELECT fkidextension, firstname, lastname, value FROM users INNER JOIN dn ON (users.fkidextension = dn.iddn );User Last NameODBCdb.odbc.select[ext.user.lastname-{#FKIDEXTENSION},{$DSN3CX}]1h0TEXTSELECT lastname FROM users WHERE fkidextension = '{#FKIDEXTENSION}';Extension: {#VALUE}User First NameODBCdb.odbc.select[ext.username-{#FKIDEXTENSION},{$DSN3CX}]1h0TEXTSELECT firstname FROM users WHERE fkidextension = '{#FKIDEXTENSION}';Extension: {#VALUE}User Extension Last RegisterODBCdb.odbc.select[user-last-resgister-{#FKIDEXTENSION},{$DSN3CX}]0TEXTSELECT timegenerated FROM eventlog WHERE params::text LIKE '{{#VALUE},"registered,%' ORDER BY ideventlog DESC LIMIT 1;Extension: {#VALUE}JAVASCRIPTif(value == '') {
value = 0
}return valueUser Extension StatusODBCdb.odbc.select[user-last-status-{#FKIDEXTENSION},{$DSN3CX}]SELECT params FROM eventlog WHERE params::text LIKE '{{#VALUE},"%registered,%' ORDER BY ideventlog DESC LIMIT 1;Extension: {#VALUE}3CX StatusREGEXunregistered
0CUSTOM_VALUE1User MailODBCdb.odbc.select[user.mail-{#FKIDEXTENSION},{$DSN3CX}]1h0TEXTSELECT email FROM voicemail AS vm INNER JOIN users AS usr ON (vm.fkiduser = usr.iduser) WHERE fkidextension = '{#FKIDEXTENSION}';Extension: {#VALUE}JAVASCRIPTif(value == '') {
value = 0
}return value{$DSN3CX}3CXDB3CX Status0unregistered1registered