alpinebuster/arkime-docker-compose

GitHub: alpinebuster/arkime-docker-compose

这是一个基于 Docker Compose 的 Arkime 部署方案,支持利用 GPU 加速 Rust/Python 解析器并集成自定义插件以应对高性能全流量捕获需求。

Stars: 2 | Forks: 3

# Arkime Docker Compose 一个支持 GPU 加速 Python Arkime 解析器并可轻松集成自定义插件的 [Arkime](http://arkime.com/) Docker Compose 配置。该技术栈使用 [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-container-toolkit) 将 GPU 暴露给 Python Arkime 解析器,从而允许计算密集型解析任务利用 [CUDA](https://docs.nvidia.com/cuda/index.html)。Compose 文件和 Dockerfile 的结构设计旨在让您能够: - 通过 `--gpus`/runtime 设置为每个服务启用 GPU 访问, - 构建包含所需库的 Python Arkime 解析器镜像, - 挂载或安装自定义插件而无需修改 Arkime 核心代码, - 以及在本地或 CI 环境中运行整个技术栈,只需极少修改。 ## 入门指南 如果 OpenSearch/Elasticsearch 运行在同一主机上,请使用特殊的主机名 `host.docker.internal` 作为 ES_OS_HOST。 您可能需要为 docker 指定网络模式,例如 `--network=host`。 设置环境变量以配置容器。(默认部分使用 `ARKIME>__=`,其他部分使用 `ARKIME_
__=`) 这些变量的优先级高于配置文件中的设置。 ### 开发命令 临时 -> `sudo sysctl -w vm.max_map_count=262144` -> `sudo reboot` 永久 -> `sudo vi /etc/sysctl.conf` -> 添加 `vm.max_map_count=262144`, `net.core.rmem_max=134217728`, `net.core.wmem_max=134217728` -> `sudo sysctl -p` ``` git pull git submodule update --init sudo chown -R 1000:1000 ./db sudo rm -rf ./db/main/os/* sudo rm -rf ./db/node-1/os/* # (Optional) Fresh start sudo rm -rf ./etc/.initialized source .env docker compose --progress=plain -f docker-compose.cuda.yml build --no-cache=true`, `docker compose --progress=plain -f docker-compose.cuda.yml --profile optional build kime-docs --no-cache=true docker compose -f docker-compose.cuda.yml up -d docker compose -f docker-compose.cuda.yml down docker compose -f docker-compose.cuda.yml restart arkime-capture ``` ### 文档 ``` sudo apt update sudo apt install -y ruby-full build-essential zlib1g-dev echo '# install ruby gems to ~/gems' >> ~/.bashrc echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc source ~/.bashrc # gem install bundler jekyll --user-install gem install bundler jekyll # test jekyll new mysite cd mysite bundle exec jekyll serve bundle install --path vendor/bundle bundle exec jekyll serve ``` ### arkime-capture 能处理多高的抓包速度? 在现代通用硬件上,实现 5 Gbps 或更高的吞吐量很容易,这主要取决于分配给 Arkime 的 CPU 数量以及机器正在处理的其他任务。性能瓶颈几乎总是将 PCAP 存储到磁盘的速度!如果您的磁盘或 RAID 无法跟上,您要么需要使用 Arkime Rules 和其他选项减少 PCAP 的保存量,要么选择更快的 RAID 配置和磁盘,或者为 Arkime 配置专用磁盘。有关更多详细信息,请参阅架构和多主机部分。Arkime 支持在数据包获取和数据包处理两方面使用多线程。 测试本地 RAID 设备的一个简单方法: ``` dd bs=256k count=50000 if=/dev/zero of=/THE_ARKIME_PCAP_DIR/test oflag=direct ``` 要测试 NAS,请去掉 `oflag=direct`,并确保使用至少 3 倍于内存大小的数据进行测试,以避免缓存成为影响因素: ``` dd bs=256k count=150000 if=/dev/zero of=/THE_ARKIME_PCAP_DIR/test ``` 输出结果代表最大磁盘性能。如果您希望获得更准确的评估,请运行多次测试并对结果取平均值。为避免丢包,建议 Arkime 的运行速度不超过最大磁盘性能的 80%。对于使用 RAID 的系统,将目标定为此性能指标的约 60% 可以进一步减少问题,尤其是在 RAID 重建期间。请注意,网络吞吐量通常以比特为单位,而磁盘性能以字节为单位,需要将这些测量值进行转换以便准确比较。
标签:Arkime, CUDA, Docker Compose, Elasticsearch, Moloch, PCAP, Python, Rust, Vectored Exception Handling, 全流量捕获, 可视化界面, 容器化部署, 插件开发, 无后门, 版权保护, 网络安全, 网络流量审计, 解析器, 请求拦截, 逆向工具, 隐私保护, 高性能计算