sipcapture / paStash

pastaʃ'ʃ = Spaghetti I/O Event Data Processing, Interpolation, Correlation and beyond :spaghetti:
http://sipcapture.io
Apache License 2.0
102 stars 28 forks source link

app_audiocodes Error: Cannot find module 'filters/filter_app_audiocodes' #189

Open myrcinos opened 5 months ago

myrcinos commented 5 months ago

Hi, I have followed the documentation and installed the app_audiocodes filter. However, when I try to run the paStash with the recommended config file it does not work. In debug mode paStash displays the following error:

/opt/pastash$ sudo pastash --config_file=/opt/pastash/audiocodes.conf --log_level debug [Sat, 04 May 2024 15:43:23 GMT] INFO Changing log_level debug [Sat, 04 May 2024 15:43:23 GMT] NOTICE Starting pastash 1.0.80 [Sat, 04 May 2024 15:43:23 GMT] INFO Max http socket 100 [Sat, 04 May 2024 15:43:23 GMT] INFO Loading config file : /opt/pastash/audiocodes.conf [Sat, 04 May 2024 15:43:23 GMT] INFO File loaded, 4 urls found [Sat, 04 May 2024 15:43:23 GMT] INFO Loading config : 7 urls [Sat, 04 May 2024 15:43:23 GMT] DEBUG Loading urls [ 'filter://add_host://', 'filter://add_timestamp://', 'filter://add_version://', 'input://udp://?host=0.0.0.0&port=514&type=syslog', 'filter://app_audiocodes://?version=7.20A.256.396&debug=false&autolocal=true&ini=%2Ftmp%2Faudiocodes.ini', 'output://stdout://', 'output://hep://?host=127.0.0.1&port=9060&hep_id=2222&__dynamic_eval__=%7B%22false_clauses%22%3A%5B%5D%2C%22true_clause%22%3A%7B%22op%22%3A%22!%3D%22%2C%22left%22%3A%7B%22field%22%3A%22rcinfo%22%7D%2C%22right%22%3A%7B%22value%22%3A%22undefined%22%7D%7D%7D' ] [Sat, 04 May 2024 15:43:23 GMT] DEBUG Initializing module output [Sat, 04 May 2024 15:43:23 GMT] INFO Initializing output Stdout [Sat, 04 May 2024 15:43:23 GMT] DEBUG Initializing module output [Sat, 04 May 2024 15:43:23 GMT] INFO Initializing output HEP/EEP Server [Sat, 04 May 2024 15:43:23 GMT] INFO Start output to HEP udp to 127.0.0.1:9060 [Sat, 04 May 2024 15:43:23 GMT] DEBUG Initializing module filter [Sat, 04 May 2024 15:43:23 GMT] INFO Initializing filter AddHost [Sat, 04 May 2024 15:43:23 GMT] DEBUG Initializing module filter [Sat, 04 May 2024 15:43:23 GMT] INFO Initializing filter AddTimestamp [Sat, 04 May 2024 15:43:23 GMT] DEBUG Initializing module filter [Sat, 04 May 2024 15:43:23 GMT] INFO Initializing filter AddVersion [Sat, 04 May 2024 15:43:23 GMT] DEBUG Initializing module filter [Sat, 04 May 2024 15:43:23 GMT] DEBUG no local module found filters filter_app_audiocodes Error: Cannot find module 'filters/filter_app_audiocodes' Require stack:

I use the following config file:

input { udp { host => 0.0.0.0 port => 514 type => syslog } }

filter { app_audiocodes{

version => '7.40A.100.114'

version => '7.20A.256.396'
debug => false
autolocal => true
ini => '/tmp/audiocodes.ini'

} }

output { stdout{} if [rcinfo] != 'undefined' { hep { host => '127.0.0.1' port => 9060 hep_id => 2222 } } }

The INI file is in the /tmp folder. Here is my npm and node version: node -v v18.13.0 npm -v 9.2.0 myrcin@ZabbixSRV:/opt/pastash$

Also during the installation of the app_audiocodes I got the following warnings:

image

What am I doing wrong? Even though, paStash seems to be running, it does not send any data. Any help is highly appreciated.

Dletta commented 5 months ago

@myrcinos Please execute pastash from /usr/lib/node_modules/@pastash/pastash folder and see if it starts then

myrcinos commented 5 months ago

I don't have a folder node_modules. However, I don't think this is the cause of the problem because when I start paStash with a config that don't have app_audiocodes, everything is fine.

lmangani commented 5 months ago

@myrcinos pastash plugins are installed as globals, and work best when pastash is too

npm install -g @pastash/pastash @pastash/filter_app_audiocodes

then simply run the installed pastash command with your config recipe

pastash --config_file=/path/to/pastash_audiocodes.conf
myrcinos commented 5 months ago

@lmangani Here are the commands I used to install pastash and audiocodes filter:

sdudo npm install --unsafe-perm -g @pastash/pastash
sudo npm install --unsafe-perm -g @pastash/pastash @pastash/filter_app_audiocodes

I am not linux expert but -g means that they both have been installed as globals, right?

Here is the list of npm modules installed as globals. Does it look ok?

myrcin@ZabbixSRV:~$ sudo npm list -g
[sudo] password for myrcin: 
/usr/local/lib
├── @pastash/filter_app_audiocodes@1.1.5
├── @pastash/filter_app_sonuslog@1.0.13
├── @pastash/pastash@1.0.80
└── hepgen.js@1.0.9

Then, when I listed non-global modules I found multiple errors (please see below). How can I fix this. I thought that all dependencies would be installed while installing a module. Isn't that the case?

myrcin@ZabbixSRV:/usr/local/lib/node_modules/@pastash/pastash$ npm list
npm ERR! code ELSPROBLEMS
npm ERR! missing: istanbul@0.4.x, required by @pastash/pastash@1.0.80
npm ERR! missing: jison@0.4.x, required by @pastash/pastash@1.0.80
npm ERR! missing: js-beautify@1.14.x, required by @pastash/pastash@1.0.80
npm ERR! missing: jshint@^2.9.6, required by @pastash/pastash@1.0.80
npm ERR! invalid: lumberjack-protocol@1.0.3 /usr/local/lib/node_modules/@pastash/pastash/node_modules/lumberjack-protocol
npm ERR! extraneous: nan@2.19.0 /usr/local/lib/node_modules/@pastash/pastash/node_modules/nan
npm ERR! invalid: rimraf@2.7.1 /usr/local/lib/node_modules/@pastash/pastash/node_modules/rimrafnpm ERR! missing: vows-batch-retry@0.0.4, required by @pastash/pastash@1.0.80
npm ERR! missing: vows@0.7.0, required by @pastash/pastash@1.0.80
npm ERR! missing: which@^1.3.1, required by @pastash/pastash@1.0.80
@pastash/pastash@1.0.80 /usr/local/lib/node_modules/@pastash/pastash
├── UNMET OPTIONAL DEPENDENCY amqplib@0.5.1
├── async@2.6.4
├── csv-parser@2.3.5
├── fast-json-stringify@0.17.0
├── geoip-lite@1.2.1
├── gun@0.2019.1228
├── hep-js@1.0.20
├── hoek@5.0.4
├── http-proxy-agent@3.0.0
├── https-proxy-agent@2.2.3
├── UNMET DEPENDENCY istanbul@0.4.x
├── UNMET DEPENDENCY jison@0.4.x
├── UNMET DEPENDENCY js-beautify@1.14.x
├── UNMET DEPENDENCY jshint@^2.9.6
├── log4node@0.1.6
├── lru-cache@4.1.5
├── lumberjack-protocol@1.0.3 invalid: "git://github.com/bpaquet/node-lumberjack-protocol.git" from the root project
├── maxmind-geolite-mirror@1.0.9
├── maxmind@0.6.0
├── mkdirp@0.5.1
├── moment@2.29.4
├── UNMET OPTIONAL DEPENDENCY msgpack@1.0.x
├── mustache@2.3.0
├── nan@2.19.0 extraneous
├── object.omit@3.0.0
├── UNMET OPTIONAL DEPENDENCY oniguruma@7.0.x
├── optimist@0.6.1
├── redis@3.1.1
├── requireg@0.2.2
├── rimraf@2.7.1 invalid: "2.6.x" from the root project
├── tinymath@0.1.11
├── UNMET DEPENDENCY vows-batch-retry@0.0.4
├── UNMET DEPENDENCY vows@0.7.0
├── UNMET DEPENDENCY which@^1.3.1
├── ws@4.0.0
└── UNMET OPTIONAL DEPENDENCY zmq@*
Dletta commented 5 months ago

@myrcinos

[Sat, 04 May 2024 15:43:23 GMT] DEBUG no local module found filters filter_app_audiocodes Error: Cannot find module 'filters/filter_app_audiocodes'
Require stack:

/usr/local/lib/node_modules/@pastash/pastash/lib/agent.js
/usr/local/lib/node_modules/@pastash/pastash/bin/pastash
at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)
at Module._load (node:internal/modules/cjs/loader:885:27)
at Module.require (node:internal/modules/cjs/loader:1105:19)
at require (node:internal/modules/cjs/helpers:103:18)
at LogstashAgent.configure (/usr/local/lib/node_modules/@pastash/pastash/lib/agent.js:133:17)
at LogstashAgent. (/usr/local/lib/node_modules/@pastash/pastash/lib/agent.js:215:10)
at /usr/local/lib/node_modules/@pastash/pastash/node_modules/async/dist/async.js:3113:16
at replenish (/usr/local/lib/node_modules/@pastash/pastash/node_modules/async/dist/async.js:1014:17)
at /usr/local/lib/node_modules/@pastash/pastash/node_modules/async/dist/async.js:1019:9
at eachLimit$1 (/usr/local/lib/node_modules/@pastash/pastash/node_modules/async/dist/async.js:3199:24) {
code: 'MODULE_NOT_FOUND',

This part is a warning and if you look at the line below, the module does get loaded successfully.

Once you start pastash, you should see logs being emitted from the stdout plugin. If you simply see nothing, then you must not be sending to port 514 correctly. (Some systems don't allow these low ports, you can try doing 5514 and seeing if traffic appears then)