We are thrilled to announce Tenzir
v4.12 , a feature-packed
release introducing numerous enhancements. Notable additions include list
unrolling, event deduplication, and the deployment of advanced pipeline
architectures with publish-subscribe. We've also added a download button,
extended support for UDP, and implemented many other refinements to improve your
experience.
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dWVMqy7J+37/C8Ebcp02fmodcdTAwMTNxXHUwMDFmcMBcdTAwMDFcdTAwMTRcdTAwMDVcdTAwMDTxrFx1MDAxM1x1MDAwNkMjXGIyNlwi7Fj//WbhQDN0XHUwMDAzXHUwMDAy0ixlXHJKj9VdX345VFbWP3/t7e07/aa9/++9ffulkKtViu1cXG//b7P92W53Ko067Fwiw++dRrddXHUwMDE4XHUwMDFlWXacZuff//pXrtm0RmdZhcbT65l2zX6y605cdTAwMDeO/Vx1MDAwZnzf2/tn+L/rXo794lxmj1x1MDAxZG5cdTAwMWTdievJjZeN+vCmhFxuipGm4uOASudcYm7k2EXYW8rVOvZoj9m0nz5LpnMyYVx1MDAxZqdcdTAwMDehZEPxePSm3lx1MDAxYt20VKnVkk6/9vpEuUK527ZHeztOu1G1M5WiU4b9eGL7x3mdXHUwMDA2PPvorHaj+1Cu253O2DmNZq5QcfpmXHUwMDFiQlx1MDAxZltz9YfhNUZbXsxcdTAwMTFk9N2cwVx1MDAxNJq492Gj1mibe/9cdTAwMGa2zZ/R3fO5QvVcdTAwMDGaUC+OjlFC2VqMjum9PVx1MDAxMWHCgrcp+ceesl15KDumXHSajG5pXHUwMDBmXy/WUkjOhVJcdTAwMWZ7zI2aZ8VhXHUwMDFm/3f0Utu5J/vMnFLv1mru91Ivvr2XsVx1MDAxZHmz49hcdTAwMDWX0aW6zWLutXOxxFQpTITQevRWa5V6dfJytUahOlx1MDAwM1x1MDAwZqVG3UlWXHUwMDA2Q1x1MDAxOKGxrZHcU6Vm3jP92DyEJry6f37V9/Z+7XfahV/w9dc+vFx1MDAxNlx1MDAwYlnEwr/2/37dVew4Ztd/zDfznSBcbkdgTC3ydozZiiWcIywpLMyRe/v79Vx1MDAxOP21bzb+91f99/5YM8K1yoORiv2aXVx1MDAxYVx1MDAxN1x1MDAxN6dcdTAwMDJS97HbaTRHe1x1MDAwYvBYuUrdbk93Q6NdeajUc7VUMFx1MDAxZVx1MDAxMXrQPv1AnUWG23//PZsxcu12ozeLMlx1MDAxNJnc+E5cdTAwMTnQTIaIoC48z+OMwj12cKh0II8um+3HWK3FUFVcdTAwMDWdM1x1MDAxOFx1MDAxYedcZr4hzsBsdN1cdTAwMGa2cN3qjSuQ5oIwN1PvXHUwMDEyV3ScXFzbOajUi5X6w+Qpdr3osaeW6ziHjaenilx1MDAwM824alTqzuRcdTAwMTHD64ZccojLdm7qoeHK7n37Trvy2tdcdTAwMWZHNM1FR1x1MDAxYdV8Rr/tjbph+OXj9//+PfNoV09OXHUwMDFj/5f7p5csemlvxjy1N0JY8qXU98NR5+A2XHUwMDFhS1xmKpdHsJslSTfcXHUwMDBmuii6RW8oimwzosgxt1x1MDAwNJmhvOWU7iZISUSYqyG7JI6fVN2zddpIoU1ost+/6oucM6HnXHUwMDE2PcutXHUwMDA1v1xcw+/Cm1jKXHUwMDEw8FwiXHUwMDFm5Uk+wHZcYnGsxOiIeeRz3G9EQy3R6pfq9f6BXHUwMDEz6z+yTC3o5DNlXHUwMDA3kFxy2Vx1MDAwMURYfCb7MGph7f6M6P7dOpCaSzDJXFyqYkfpyKXK5tBRt95u1GpfK/iT91xcj63NhZjc+iFkoGJcdTAwMThTXGaNXFzEeUKWLHez7TuaqKZQXHUwMDA1TO3uTc7pd4IuZFQrXHUwMDAw/yuhSK3UqLvN+WQ1kXPauXqnmWtcdTAwMDOGp8WOjmIjPtY3oUogSfhWrW+sXHUwMDE5XHUwMDE2bux90vp+R+beR0xp2OJ9XHUwMDFku22nkoX04WW0mT/KdFWuXFy4/nhjQ4ksdDvu92PeQ65pmvi24fefZ9WPXHUwMDAwMnH4QkZ92y44XHUwMDEzrVx1MDAxYlx0PubSS/ApV5RcdTAwMTKNXHUwMDE2V64kcnDWSZ9hbpdRzL67iYdiKS8ne0J+t1x1MDAxNpbjckzqyYjl+q/uzUqaNk9KJJ+fXHUwMDExpZvhcLNpmVdKYmBcdTAwMWWX7b9cdTAwMTWZR0vJ/Cpg9DT1OJNcdTAwMTgjd1x1MDAxMHVcdTAwMWVcdTAwMThcdTAwMGaPy/1cdTAwMTa+O22FOi1cdTAwMTE5iz9cdTAwMWRcdTAwMGVcdTAwMTLPXHUwMDAxXHUwMDA3o1xmMlx1MDAxOFx1MDAxOfhcdTAwMTNCK7xlXHUwMDA19HVg9DSJqKLQimViXHUwMDFlne5cdTAwMTXP4OjVaevortK9OJPiXHUwMDAxx1x1MDAwMlx1MDAwZUZcdTAwMWRgMGrMOUJYbdXZ+EosemppgsDpJlx1MDAxNP4tXGbGUEc5kVCh+JLrX/R5zGGXtypcdTAwMTNsMFx1MDAxMrxRMJZKdkHrz4JRISrBRd+2Zf51YPRcdTAwMWPLxYIrzoFcdTAwMWVcdTAwMTdcdTAwMDdj8qFxdVluXV+LZiepa+GHy6pTXGY4XHUwMDE46UbBmONFVSp9XHUwMDE2jIIjYzRudTz3K7GoPLGIXHUwMDE5J1x1MDAxOD6LY7HfuUmj1tl1PtIoPofxeS/z0FxyXHUwMDA1XHUwMDFji1x1MDAxM/5cdTAwMGJdK1x1MDAxNFfjRaxcdTAwMDRnnLHtJlx1MDAxN1x1MDAwNINcdTAwMTgpwFFJubjFXHUwMDE4Q+HUbfvkfNA7pPIxgl6a6WYk4FiUwcVcIphJVDNo3HfBovDGXCL0hGKML+FLl1x1MDAwNsl2vHSSiVxchy/7bZRRtfT1Q8DBqOeA0VwiXHUwMDA0XHUwMDBiRFx1MDAxNFx1MDAxY0M4oith00tlY20ppbFWXFxorSRzmfFcdTAwMWZYpdqSUlFcclx1MDAxMNFaMi0noYtcdTAwMTEjbHyU61x1MDAwZoeuT7aBwlJcdTAwMTK0xFiEKHepXHUwMDEzucgx5CDVLl4/XHUwMDE0XHUwMDE4SVx1MDAwNVx1MDAxYrpcdTAwMTRvkkdXjFx1MDAwMlx1MDAxMU5cdTAwMTRcdTAwMTj5rqP/cDB6ZqFJxlx1MDAwNIj0XHUwMDEyUaBy6fFcZp3FsmfonD3E+rlQ6DhUXHQ4XHUwMDE2aXB1Olx1MDAxNlhIydH3IUbqhUVQYIoqoVx1MDAxN8di7bFORPal3Hp2OnE7ke9kQpVBwLG4UV9nVV5cdTAwMTTcXGaObjc58lx1MDAwYrEoPaPjimlcdTAwMDVcdTAwMTbV4sOG/oO+wYTiRl2d1VwiQIpcIiE02byn87ZjzzWav7dYXG7IXHUwMDE4zl6TUj72/H777ctw7p1cdTAwMTTjnYEuoVx0XHUwMDFjzPYlxsbvu8dRXHUwMDEyzV5cdTAwMGVUI9y6OrlX2fOXoOfEzIkurZaO7ptcdTAwMTOD1VxmrM+wXHUwMDAwmHFcdTAwMDbItsckN5tcdTAwMTQzSOTCvctWXHUwMDAxo7NMZSCd54uLXHUwMDBi9u2TYlxcXGKZOP4v989PSL2nlcVcdTAwMTBmkronS82dqsZvXHUwMDE4fr5uPt5Hc/rk4JlJu9dccrrU+/ufdLXMd3+pn6Xhpoc4XGLVWiv9R1x1MDAwYv1l5DH/lCe2PGne1WqnXHUwMDA3yUH5MjlL6EPIgp7iXHUwMDEyacqUNPFcdTAwMTGuXfli34BcYsiGiMCVSTw1zklcdTAwMTDWRCyReH6buMpXxfNd/CyPalwic1x1MDAxMo2/XHUwMDFjeI0tXHUwMDA1h1x0fIOoXGYhi1xusFx1MDAwMlx1MDAwNFx1MDAxM4Rw7Zpzum5imDlBbeLmbFx1MDAxNPF+XHUwMDBm+lx1MDAxM81cdFx1MDAxN9tcdTAwMWWY3yxRoOMsaqCcXHUwMDFkzdpR51x0XHUwMDFm5p6O7+hM68BC8KIkRZRSgTlFaOTDfVx1MDAwN55cdTAwMTifXHUwMDFhXHUwMDE3mobPksRhMu9nusbUe+iFS0KEWmboxan2r5I3mftCI10tXHUwMDFlPFx1MDAxNtv0roo8eKPQbnQ6oXLOKZS3z1x1MDAxZHhOlsSKc1hYMZcvycV8ZEA+V1x1MDAwMoDPXHUwMDE4o1x1MDAwNvjQXHUwMDA1U65cdTAwMDTWYFFC7+xUMNGLLLYzu3Vs31pld0LFz+jPdVx0L/NU+tTMtkSSLa7zw718rXfZiMRvnExcIt3o3509O+U/QXZXnIe+nOyaXHUwMDFjXHUwMDFlI1x1MDAxN0pjilx1MDAxOWUzpp7BbiBwV6t+RDewojvVnWuTXFzPXHUwMDFjWYyI1lQtMTpykynmivj06pzeRET92mnKOPHKStwlyV3ReV9Sclx0VWCC0+FwMSdySudqxYBK9G5lcX9XuZ3szLWJrae1TIVcdTAwMTJcdTAwMDJcdTAwMTOyuMI9XHUwMDE0py92XHUwMDE16aNcXOguXHUwMDFhrbdcdTAwMTLZ57DXNItdXHUwMDEyW7bigNLnXHUwMDE1LoIumKo8wYQ0yVPb9qt/5HbW0X76dtibS1xu7pyUXHUwMDA0NLl1lGYoJVJcdTAwMTgtXHUwMDExI4tcdTAwMWO3slx1MDAwMzunXHUwMDBmjnP8pVx1MDAxNZW37epR0kN8XHUwMDAzMlx1MDAxMDxv/qhYTXBXTEowxXmk5GKnXGbjVdDo6bxcdTAwMTGMpMDa/SrmoTF1cdMhzdMrleBPKMlOndPUgVedooCgcd40qVx1MDAxNdG4YrqWlohrUyXku6DRcyCRYMxcdTAwMTjQ41x1MDAxMvOk/Fx1MDAwN4GDicY5UYRcdTAwMTXRuFqWXGbTWiHq7oEtZMn4J4WMQW3bWTJzoM69oFx1MDAwZZYtyLwmcnGoP5KHXHUwMDEzxkuRei3XtS8uXHUwMDFlokfOYzjYUJ9jXHUwMDA20Fx1MDAxNYPdK5pcdTAwMDFUg/b7TsTrXTlUS6pcdTAwMTnnS0zE0lx1MDAxN3ey1TrhOTVIiPvcUah0XHUwMDFkb1x1MDAwNVx1MDAxY43+dSS2jEaizGRp8m2Kmvhwo6RcYoxSKlx1MDAxNk8oXCKlyvNz+3BwXHUwMDFiSVx1MDAxN85IWiWyNzJcdTAwMWVsNM4xSldF42pGqaRcXFCBv890XHUwMDE27yA5NnE97Z46Plx1MDAwZoyt4kkz8XhdXHKdZZu9y9uHu6fHx6BcdTAwMTeSmFx1MDAxM1x1MDAxZl9cdTAwMTGMq9mkmFxiKbFC2y3p+pVo9K46iFx0XHUwMDE4jYotXHUwMDEx/MXp05NG7V6cPUVcdTAwMDWppphsXHJ4PeBo9M2v3i4zmuw2TL9gXHUwMDFhQUCwKL0rSSituFZiXHRv3T97M5hY9M31XHUwMDAzIOzMhGmNXHUwMDE5w1hvvlx1MDAwNsrbjpmuvX/m91x1MDAxOC531bXnSmtE+Vx1MDAxMqswXHUwMDFjXHUwMDFj1HKX19nnXCJcdTAwMGaFm6WHPKtcdTAwMWVd02CLxTzPfsVUmNV8KcFcdTAwMTRcdTAwMTA0XCI7NYC+XG5cdTAwMTZ9XHUwMDFje2SogLHFrdd4i1xckULM6T82a1x1MDAxMbtcdTAwMTg/7afuTlx1MDAwMlx1MDAwZcY5jv1WwYiRRmaYXHUwMDA1f1x1MDAxYsfeuzC9XHUwMDEwlFx1MDAwMVx1MDAxZZfI872Ip+xcdTAwMGJdvGx2+r2D8/vjcK8rXHUwMDAzXu9nToXI7aJRIVx1MDAwNFx1MDAwNlx1MDAwNPk2tad8okxMM4agO1x1MDAxN1x1MDAwNyN5LKpMLXz15Ih0sn6kMonus1fSeUDAOC/KtFwiXHUwMDE4V/OlNHBcdTAwMDWSXHUwMDEyfVx1MDAxYj3tXHUwMDE5ZeKaS1x1MDAwZX9cdTAwMTe3XHUwMDE5y1x1MDAxN91bnG/Zt4VSupQunz7cXFxcdTAwMWY4XHUwMDAxx+KcINOKWFxcceBTUon094Gid51cbmJKq+slhoKyT1x1MDAwN/Lw8lxuy3o3W1FcIlmLXHUwMDFkxM5cdTAwMDNcdTAwMGVF/1xi01ZZkSDBXHUwMDE4pYh9XHUwMDFiXHUwMDFk7ZOhzlx1MDAxMZNoqVx1MDAxMFPY6TfYXHUwMDFkTzY1XHJf3OdT7DrUXGI4XHUwMDE4faumbFx1MDAxOYxcdTAwMDJhXGaN+y5YlN5YpFx1MDAwNPSD4ovz4lEqXHUwMDFmi1+XU7x3W67jWuX47txcdDov+kc71e5EO8Hyh0t8n4rPPsvBaU0loWKJMSP/ydOBRK5/6ant2pZAoFx1MDAxMjMpNp/b8bZjZujdv9TCXHUwMDE41LZcdTAwMWR691xccJV60zP0uVx1MDAxNmOaam4t6Zh9gHuZm0RGXHUwMDBlXHUwMDFhV4X2aVZcdTAwMTZyXHUwMDFlKFx1MDAwZkztXHRBLU6kKfRcIqUm2lXP+DV5VFnSJFx1MDAxNFNFuVx1MDAxMHpFhi6ViozOiDVcdGRcdTAwMTl2XHUwMDE1TII2kO5GfEhcdTAwMDGZYdeCs6+3vlLbJ6fHuFZCdF1gbCXEUYe+r4RYqzxVnL3/28P7Y7s+VjssQJPt9lx1MDAxONLXs1x1MDAxY+KMXHUwMDFiT66IyD8ngdi7+otmjEm+jJ45yVx1MDAxYz/xfsq5XHUwMDE3kep9ybHvnWbtMfBcdTAwMTI4+vo6XHUwMDA0rC3KTXWhV5GbbMiaJE5aIG0gcUxKTjVcdTAwMWFB0EfisKLUZFx1MDAxNe7WQNh6RI5sS+TIukWOXHUwMDEz7+E9U+rB6IHFld59jt3YsaMjwTuHpUqqXHUwMDEwvX84yVx1MDAwNl/kLMJcdTAwMTRCXHUwMDE4XHLzTdToKq/GnbYwXHUwMDEyaONcdTAwMTKIOeg8Qlx1MDAxNFwikrrqXfhJIHgn2Myz/4ZKj25LXHUwMDAy6bolUHhPWZJCcbnUaqB5UkU5Xoo8pU/TrNx+rp/H416LRlx1MDAwNEdcdTAwMDClRYQpLzisXHUwMDE3wVxczubQ6sSrhqhmi1x1MDAxY6dcdTAwMTZcdTAwMDbvVTBQriDeVM5Ygnta5lx1MDAxNGFEabxb0zpWXHUwMDEzuXdJ+GqJm77vclx1MDAwMudZ/YD7zFjF1IQzlkivij8+xZ9Q/KZ+r5KX8rjKaKLT85C4gEQz5i15qpDFkFx1MDAwMTpRnDDMJlx1MDAxYbaeMlxis6tcdTAwMGIyxDlcdTAwMDajl1x1MDAxMIqgXHUwMDFisMvDfFx1MDAxYknjXHUwMDAyvIDdmsfien9/dFx1MDAxNYSpYn9TvTm6wl/un0tLsPecc4WkkpgtUVx1MDAwMCF/LYv2Y07mSuHHQSxzzNPd84CP6fhcdTAwMTdcdTAwMGI2JUI3L7/CQ35H96Xu4Yw38eVcYmOwV3fUZ/zD5VdMy+94b65LfKV33pTgXHUwMDE4M0SX8DnrXHUwMDA3+Xo1aivVilx1MDAxZNXyZ718np17XHUwMDE1/Fx1MDAwYoj8zkviY8jiRIGccEQwhcM2XCLBs1x1MDAwYlx1MDAxMY3dmE2NfFx1MDAxMVxyXHLesclS30V+yaT8TvTl2sTXc9ZcdTAwMGX4qkRKtYT2vY+90Pp59OKk1Gj37CfU6F/cXHUwMDA1fSli/8HAV+GlXGKcd3Bl3Vx1MDAxMrRt2Vx1MDAxNWA4M0p3a97tj/B+Sni9ok1cdTAwMTh7T7kjYK6D8bxEcl6ofpi8f+mkWTeFsY6L03DkyitcdCUw4SY8McaCV5zyqYSytZgho5RYiGIyI67EqIW1+zNlKFx1MDAwYkxcdTAwMTjSavOlcjZcdTAwMWRnolx1MDAxZXGmXHUwMDExa77HmYp2sdusVVxu0Fxij1BTzS6Ng3o9gaaZN56MNX1KVSrsnTiDuFx1MDAwNGygJVxu5JJwlTfoWTZcdTAwMWQ/6V1hesPa93f5oEubZNiiXHUwMDE4UcG1YsJtO1xmUYC1JYHjXGKRYFVcdTAwMTJOvE1dNPz4i6Kt7YI9I5Nm1sJWszJpiFnhhm3XO1VKuGqT/CjImUezJZ3Z+cePr2xFzFx1MDAwMj+uXHUwMDBmXu521OKcQH9cbqlcdTAwMTTYiVxi2yHMl3rAZVfU8WIg96yPqWA3XHUwMDExnCm1xNJa2ftcdTAwMDQ6qeayx1x0nLhO9IroOnr1XHUwMDE0dFx1MDAwNuLQmWYyXHUwMDEwZVxcXHUwMDEy7FapXHUwMDFm0W5TXHUwMDEziGDGXHUwMDA12Fx1MDAwNt7hss0zkKlcdTAwMDZjhpm3aqFcdTAwMWJcdTAwMDJcdTAwMWHlXFz9XHUwMDEw0Myjf1xi6HXj/GhcdTAwMDFmnuPbmlx1MDAxMK1cdTAwMTVZYv74ZfLoJJnX7OG8XHUwMDE0UaniY6ZevvVazTswXHUwMDA0JFx1MDAxMLEoJ4IxwTnDfGTjvFx1MDAxM1x1MDAxMEaGgVx1MDAwNNWIXHUwMDEyPdGudfHPOJ5GfTKW9c6ooEpgXHLWXHUwMDE4d1x1MDAxMeFH1ruUWm+5XHUwMDA2+Vx1MDAwZj3Nll6sLMI5XHUwMDE40Vx1MDAwNIM9jYl2n40n+3be1UJcdTAwMThOYMP1djX8k0gz9/WmsDLvenK8dSMlPOtqZO7VpKVcdTAwMTTDQoCTLDTBfOxZLcUxXHUwMDAyT1x1MDAwM0OjJSh8tVx1MDAxNeJTyHORXHUwMDA1YkKHQFx1MDAwNItnXHUwMDE5XHUwMDE0OuF8qvVyWlx1MDAxYlx1MDAxNG5Oo1x1MDAwN6X83e3LcdB5z9/1IzxArlx1MDAxZsGSU7LlleR/mO3H8Fqj4UWQdy10psHVXHUwMDExePHY00lL55+bpFKNRDOxSCjRXHUwMDBi3aSPgk5AXHUwMDFhXGYveEqqXHRcdTAwMTUmuXaKf6hiZl1cdTAwMTVcdD+Jd2Lvtu0uqrRm+lx1MDAwYmqr/ZCT+fyYXbtsdoHMe7FcdTAwMWVWXHUwMDAyMTS2NvHcteTzWdK5TV5cdTAwMTZcdTAwMDZcdTAwMGVNiVBcXD6nXHUwMDFmXHUwMDAzXHUwMDFm8FJcdTAwMTNcdTAwMDGv8Vx1MDAwMWrDe8AlSkpcdTAwMGWmXHUwMDE3oGObXHUwMDAxL6YwXHUwMDA1LG23XHUwMDFhxVx1MDAwZrXNlk8yYVx1MDAxOFx1MDAwNcpOw0Z7XHUwMDAzs3GFzeJ4UtPl7vf1hprnovdcdTAwMTR5j8lLoG3lLu83d8374+M0r2VPkHZcYmWhSCd0Plxi+Ox6oXxcdTAwMDP02vQ0aFx1MDAxYmxcdTAwMTRcdTAwMTn1cVx1MDAxM1x1MDAxN1x1MDAxOaz3oqtZ6axDiJlcdHCcYVxyXqqYXsBcdTAwMWFcZjPw5ddcdTAwMTKwd601/4aYd338e7u05mqY/Xrr4YPsXHUwMDFm2Vx1MDAwN8fJ+m3m6Jm/NEORw9jLwXnHNeV/v9QodE0rkSXAwuZcXCPMlFajafbmdeWapsnMQkxys1ZcdTAwMTVnXHUwMDFhXHUwMDEwr6dcdTAwMWV9jE+9moTvcbLVf7mqtkqNl0o/zeOMlGc3SVJujGplZpgz6Taz3tqkLVx1MDAwMZgzS5dQXHUwMDEzXHUwMDFiQGKqSWsm8n2nXZkowbHJ9N5pdK+Lz8DC8OIz6Hxp1iRbPEGwXHUwMDE3YjWdjEfaqX5cbvqpUyqKsFxiOp9Ri3FGOeGYUOLyLIcpXHUwMDBm4JRyrlx1MDAwNLxyypGUqyVcYnrxXHUwMDE5l1x1MDAxNlx1MDAxM1x1MDAwNIEpaKqoYzzL71SWmZ+BJEKYa3c08mOGN1x1MDAwM5NcdTAwMTlTvoYkpMCym7fR5kUyzfRl4rHZS6T79czxaeoplq5cctKzSCZcdTAwMDRqjdPhjCVcIlx1MDAxOVx1MDAxMUq4nMNcdTAwMGaWXHUwMDAx40NcdTAwMTJ4zdBcdTAwMGJcdTAwMWF4ctdZxlx1MDAxM3jmM1x1MDAwNbl1UY7wjnUxXHUwMDEwMlxuenpxyjmO1o/vU8dcdTAwMDNcdTAwMWO9S8RcdTAwMWY7vWrD6d5cdTAwMDSbcrTydfnMXHUwMDEwIzPxXHUwMDA0QKIwJZs2wznK0oJcYs041Vx1MDAxOFx1MDAxYTGzcIvFXHUwMDEw+HuCm4FcdTAwMDHtnk3/xjmScVx1MDAxM6xYx5z2wHKOXHUwMDE3s8R6zmHmJjM4XHUwMDE5sEKq2M4qcXhhe5gvXHUwMDEyM1xm0sUlKFx1MDAxYemOxLybVMQy3v0w41tTTj/U+5ImVWyAVeUoXXD000M0TJzTYqeWnd0mZe5cdTAwMDbCXHUwMDBmjpWSbNSDozZhSyHQiJQwXHUwMDA2blx1MDAxN8a7z3ZekDef0Fx1MDAxNNrXRXfUZ1x1MDAxMVx1MDAxZqBXMGs1XTzIdXiKn527UC1UXHUwMDBmiXY4LV66sqN2mu/koqH9dbuMM1wiXFxMXHUwMDAwQNZSJefP5bNcdTAwMTC2XHUwMDEwXHUwMDA1LkOgx1x1MDAwNdNqNElh7XxcdTAwMTay6a1zXHUwMDEza/Ri9tlZuHJ6XHUwMDFkqd9cdTAwMTa8rDdcdTAwMDavSWrFKZhuVE1bb1x1MDAxOPSqwPAqKVx1MDAxN1xuXHUwMDFjWPyHOYlsjYORnoxFNEdmuafFXHK0XFysXHUwMDE4XHRfhFx1MDAxYqFk/CXFdStcdTAwMTWtoUTQo/K+g5FcdTAwMTTvymCk5uDDm+VEV+ezn4j9uqX3ZzDy/VmDMlx1MDAxOOk5/1x1MDAwN14pRUIuMdkuRmpOO3t93lC18nnz7Kmcjda91rdcdTAwMGJcZuv5j0VcdTAwMWHaXHUwMDBizFikoMi4JT9jkUFktp+xSN8nXFxb0ir2jKOBNpFcdTAwMDIkdVx0Oy1zVTysnrUjnSg+SaSPyMvp7YXX5P7AMFx1MDAxNkYmbVUpUCBcdTAwMTJJ5q5VM/Qt3cTx5Vx1MDAxY8WBRoXU213u7YejXHUwMDAywDk7l6fqVZGAXGLP7Fx1MDAwN2mCXHUwMDAx4Fx1MDAxZS6e/eBcdTAwMWatXGZkKFx1MDAwYiOOLaEw48TM/FOu1SZe07WohTnYxZJqNFbgfK2he25RicFcdTAwMDRcdTAwMDOnXHUwMDEwIzWjZFx1MDAwMeaWXHUwMDAy8qFcYv5IzfSUY0hgXHUwMDBmx9BZW11cdTAwMDLYf+xmXGaQn1iH4NPM5y68SSwhXHUwMDA1N8usU7OSr6uW3ZxCnJ1uvlNoV/JfXFxcdTAwMWVhxm3XU4jTz9hQ4NNJucz6iTx88vBIKLk8Po1VVFwi26xcdTAwMTfaXkvRXHUwMDA3zNhwzZGZWHHhNfdJgVx1MDAxMUI1p1xie1x1MDAwZtx9QXlcdTAwMDTwp1x1MDAxMWbkx0H6MT7+XHUwMDE044N6l0NcdTAwMDKRY1TgJdxcdTAwMWT/7LNAXHUwMDFhXHUwMDFmkiOLU1x0Zlx1MDAwN8dcXFMx4etIYjGqiFx1MDAwNtGjzCQtXHUwMDA11fjAkpra4XrzXHUwMDEz+PyMXHUwMDBm/9zbMUD+XHUwMDE4XHUwMDFmX2R8eEo+8y6Mglxi0+Pz3OeJvn9OWDBFn5nYK8FcdTAwMDI4kMAjj1tcdTAwMWWUYktzRrGRKUXcy2hcdTAwMDZM9KGlXFyNOYm7Jfl/+13XP/vV97o/jPK668tcdTAwMTiFeVx1MDAwZnGbrDaslFx1MDAxNIu7M/7Z9YFkXHUwMDE0QaRcdTAwMTnD01x1MDAxY6w7zVxin0jK0cSSpqYlxYybqi+bSUKk2sJA38iUXiVA4bPKL05yynTqs8RaczBNf8yJXHJcdH+zm69VOuWvXHUwMDE1/ambrknwvVx1MDAwYlwig9QjjchcdTAwMTJcdTAwMTPt/XOmXHUwMDAyKfeaaFx1MDAwYlx1MDAxZVSDf6BcdTAwMTFI9mQyXHUwMDFlWFx1MDAxMkhwJlx1MDAwNOZcdTAwMTijzSTjrUfsKcOEa7L55Fx1MDAxNj+xXyGE6WtL+Kd5+l73h072vo5OqI9cdTAwMWRBXHUwMDE04JfzZUo0++Y7XHUwMDA2kk+GI1wiSCow7IFaQFonXFxcdTAwMTOMLanNW0BIgudAJlx1MDAxYVx1MDAxNlx1MDAxOM9cdTAwMDREgyho6XaDXHUwMDEyf7LY/2kuXHUwMDA05mhyq2tpMoVcdTAwMThgaYlqrdV0WYbaXHUwMDBmV4Pzl9yBnS81T69Z0EdEhEv5XHUwMDBlz3D5TOuszm5WSZLqk9XZNVx1MDAxM+DObHdcdTAwMTUyacrVrih5i1x1MDAxN2d/03V7/7u3JZnzbcDsYu1/vVHXfq7ZTDqmuvv7tID954rdO5i5WKT5XHUwMDE4XG5cdTAwMWOKrpFcdTAwMTF7OPXi91+//1x1MDAxZpnHx1x1MDAxZiJ9{ "src": "192.0.2.1", "dst": [ "203.0.113.2", "172.16.76.150", "192.0.2.143" ] } {"src": "192.0.2.1", "dst": "203.0.113.2"} {"src": "192.0.2.1", "dst": "172.16.76.150"} {"src": "192.0.2.1", "dst": "192.0.2.143"} unroll limit = 1 limit = 2 limit = 3 original deduplicate subscribe subscribe subscribe publish publish subscribe publish & subscribe
Unroll and Deduplicate Events In today's data-driven world, many data sources deliver information in the form
of lists/arrays. While seemingly simple, working with these lists can sometimes
pose challenges, particularly when the data structure becomes intricate. Let's
take the example of a connection summary stream in JSON format:
{
"src" : "192.0.2.1" ,
"dst" : [
"192.0.2.143" ,
"203.0.113.2"
]
}
// after 1min:
{
"src" : "192.0.2.1" ,
"dst" : [
"203.0.113.2" ,
"172.16.76.150" ,
"192.0.2.143"
]
}
To overcome the hurdles of JSON list manipulation, we introduce the new
unroll
operator, allowing the creation of an event
for each item in the list. Let's unroll dst
:
{ "src" : "192.0.2.1" , "dst" : "192.0.2.143" }
{ "src" : "192.0.2.1" , "dst" : "203.0.113.2" }
// after 1min:
{ "src" : "192.0.2.1" , "dst" : "203.0.113.2" }
{ "src" : "192.0.2.1" , "dst" : "172.16.76.150" }
{ "src" : "192.0.2.1" , "dst" : "192.0.2.143" }
The data is now significantly easier to work with.
Do you see the duplicate host pairs? Let's remove them with the new
deduplicate
operator. Run deduplicate src, dst
--timeout 24h
to condense the above output to:
{ "src" : "192.0.2.1" , "dst" : "192.0.2.143" }
{ "src" : "192.0.2.1" , "dst" : "203.0.113.2" }
// after 1min:
{ "src" : "192.0.2.1" , "dst" : "172.16.76.150" }
The --timeout
option is useful for controlling expiration of entries. In this
example, if the same connection tuple doesn't come up within a 24h interval, the
corresponding entry is removed from the operator's internal state.
We delved deeper into the power of the deduplicate
operator in a previous
blog post .
Building on this, the
every
operator
(prominently featured in the previous
release ) can now also accompany
transformations and sinks. To illustrate, let's answer this question: "With how
many new destinations did each device communicate in the last minute?"
Using every 1min summarize num=count(.) by src
, we get:
{ "src" : "192.0.2.1" , "num" : 2 }
// after 1min:
{ "src" : "192.0.2.1" , "num" : 1 }
In summary, these transformations provide powerful in-band capabilities leading
to substantial data reduction, simplifying the analysis, and making data shaping
more efficient.
Publish and Subscribe Exciting are also the new publish
and
subscribe
operators, which open up endless
possibilities for creating arbitrary dataflow topologies. For instance,
you can set a publishing point within your data stream. It's as simple as from
tcp://0.0.0.0:8000 | publish input
. This defines a channel input
that you can
now subscribe to with subscribe
.
Let's consider a case where we aim to route all alerts into Splunk, and
concurrently import all other non-alert events into Tenzir's storage for further
analysis and monitoring:
subscribe input
| where alert == true
| to splunk
subscribe input
| where alert == false
| import
Here, the first subscriber takes the events from the input
channel where the
alert field is true
and routes them to Splunk. In parallel, the second
subscriber takes the remaining events with the alert field marked as false
and
imports them into Tenzir’s storage. Our new feature enables this precise,
dynamic routing, making data management more efficient and streamlined.
Contexts as Code Tenzir v4.10 introduced introduced the ability to statically
define pipelines in Tenzir's configuration file: Pipelines as Code (PaC) .
This release expands upon that capability by also allowing static configuration
of contexts.
tenzir.yaml tenzir :
contexts :
# A unique name for the context that's used in the context, enrich, and
# lookup operators to refer to the context.
indicators :
# The type of the context (e.g., `lookup-table`, `geoip`, ...).
type : bloom-filter
# Arguments for creating the context, as described by the documentation of
# the chosen context type.
arguments :
capacity : 1B
fp-probability : 0.001
On a related note: The operators context create
, context reset
,
context update
, and context load
were changed to no longer return
information about the associated context. Instead, they now act as a sink.
Ever wanted to just save the output from Explorer to your computer? With the new
Download button, you can do precisely that:
Just select one of the available formats and you're good to go!
Other Changes There's a new udp
connector for sending and receiving
UDP datagrams. Finally, you can now receive Syslog natively. Speaking of Syslog: we've enhanced our parser to be multi-line . In case the
next line isn't a valid Syslog message by itself, we interpret it as the
continuation of the previous message. The tcp
loader now accepts multiple connections in
parallel, e.g., when used as from tcp://127.0.0.1:8000 read json
. We've massively improved performance of our Parquet
and Feather formats for large files. For writing,
they now both support streaming row groups and record batches, respectively,
and for reading Feather now supports streaming via the Arrow IPC format as
well. This comes in handy for those of you working in the Apache Arrow
ecosystem and seeking seamless interoperability without loss of rich typing. As usual, the complete list of bug fixes, adjustments, and enhancements
delivered with this version can be found in our changelog .
Explore the latest features at app.tenzir.com and
chat with us at our Discord server .