Sample code
There are several tools that can be used to send log files to Devo:
Tool | Description | Allows tagging? |
---|---|---|
Devo Python SDK | Get it here. | Yes |
nc | Netcat | No |
logger | Tool to send events (Unix-like) | Yes |
Syslog echo | Tool to send events (Windows) | Yes |
Windows syslog | Several Windows tools available | Yes |
Windows logger | Windows-based logger | Yes |
Here are some examples:
Devo Python SDK
devo-sender data -a collector-eu.devo.io -p 443 -t <tag> --key <.key file> --cert <.cert file> --chain <chain file> --file <text file to send>
nc
cat accessbcn1.txt | nc 192.168.1.111 13004 (needs a relay rule)
logger
cat fw.log | logger-p 13000 -t firewall.checkpoint.fw
We also provide boilerplate code for sending data to Devo. Here are a few examples:
C Language
C
#include #include #include "lt_main.h" #define DEBUG 1 int main(void) { lt_ctx *lt_id; char relay[] = "collector-eu.devo.io"; int timeout = 2; lt_id = lt_openlog(relay, "443", "ssl", "test.keep.free", "local3", timeout, DEBUG, "certs/client.crt", "certs/client.key", "certs/ca.crt"); if (lt_id == NULL) { fprintf(stderr, "lt_openlog error\n"); exit(-1); } lt_syslog(lt_id, "err", "This is a test from C"); lt_syslog(lt_id, "info", "This is a test from C"); lt_closelog(lt_id); return 0; }
C# language
This sample code references some namespaces found in LT.Common.dll.
csharp
using System; using System.Security.Cryptography.X509Certificates; using LT.Common.Formatter; using LT.Common.Net; using LT.Common.Utils; namespace SendEventsSample { class Program { static void Main(string[] args) { string ipAddress = "collector-eu.devo.io"; int port = 443; string tag = "test.keep.free"; int facility = 10; string message = "Hello World!\r\n"; try { MyTcpServer client = new MyTcpServer(ipAddress, port); if (client != null) { client.Certificate = CertificateHelper.GetCertificateFromStore( "CN=testing, O=LogTrust, L=Madrid, S=Madrid, C=SP", StoreName.My, StoreLocation.LocalMachine); client.Connect(true); if (!String.IsNullOrEmpty(message)) { byte[] formatedStringBuffer = formatedStringBuffer = LogTrustLogMessageFormater.PrepareSyslogMessage(facility, message, DateTime.Now, tag); client.SendMessage(formatedStringBuffer); } client.Close(); } } catch (Exception ex) { // .... } } } }
F# language
This sample code references some namespaces found in LT.Common.dll.
fsharp
open System open LT.Common.Net open LT.Common.Utils open System.Security.Cryptography.X509Certificates; open LT.Common.Formatter; [] let main argv = let ipAddress = "collector-eu.devo.io" let port = 443 let tag = "test.keep.free" let facility = 10 let message = "Hello World!\r\n" let client = new MyTcpServer(ipAddress, port) client.Certificate
Java
Java
/* Using Scoja syslog client library. * Scoja is a third-party open source logging framework. * See http://sourceforge.net/projects/scoja/ */ import org.scoja.client.Syslogger; import org.scoja.client.ReusingTCPSyslogger; public class Test { static final String HOST = "relay"; static final int PORT = 514; public static void main(String args[]) throws Exception { Syslogger logger = new ReusingTCPSyslogger(HOST, PORT); logger.log("Log Test"); logger.close(); } }
Lua
Lua
require("lt_lua_syslog") cert = "certs/client.crt" key = "certs/client.key" chain = "certs/ca_dev.crt" relay = "collector-eu.devo.io" relays = { {relay, "1234"}, {relay, "1234", "udp", "test.keep.free.udp", "local1"}, {relay, "1234", "tcp", "test.keep.free.tcp", "local2", 1, 1}, {relay, "443", "ssl", "test.keep.free.ssl", "local3", 1, 1, cert, key, chain} } for i,v in ipairs(relays) do local lt_ctx = lt_openlog(unpack(v)) if lt_ctx == nil then print ("ERROR: Connection estabishment failed") end lt_syslog(lt_ctx, "info", "just a simple test message") lt_closelog(lt_ctx) end
Python
Python
from devo.sender import * SERVER = 'collector-eu.devo.io' PORT = 443 KEY = 'route/to/keyfile.key' CERT = 'route/to/certfile.crt' CHAIN = 'route/to/chain.crt' TAG = 'test.keep.free' engine_config = SenderConfigSSL(address=SERVER, port=PORT, key=KEY, cert=CERT, chain=CHAIN) con = Sender(engine_config) for aux in range(100): con.send(tag=TAG, msg="example line to send")