Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/amine7536/quasar
Quasar collects BGP events from Peers and sends them to multiple outputs (Stdout, Logstash ...)
https://github.com/amine7536/quasar
bgp devops gobgp golang logstash
Last synced: 11 days ago
JSON representation
Quasar collects BGP events from Peers and sends them to multiple outputs (Stdout, Logstash ...)
- Host: GitHub
- URL: https://github.com/amine7536/quasar
- Owner: amine7536
- Created: 2017-04-18T20:11:49.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-08-30T17:16:40.000Z (about 7 years ago)
- Last Synced: 2024-06-20T05:11:24.944Z (5 months ago)
- Topics: bgp, devops, gobgp, golang, logstash
- Language: Go
- Homepage:
- Size: 3.1 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Quasar [![Build Status](https://img.shields.io/travis/amine7536/quasar/master.svg?style=flat-square)](https://travis-ci.org/amine7536/quasar)
Most astronomers think a quasar is a black hole with matter falling into it. Quasar collects BGP events from Peers and sends them to multiple outputs (Stdout, Logstash ...)
## Getting Started
You need a working `Golang` developpement environnement with `glide` for dependency management
Please see https://golang.org and https://glide.sh### Install dependencies
```bash
[abenseddik@macpro] git clone https://github.com/amine7536/quasar.git
[abenseddik@macpro] cd quasar
[abenseddik@macpro] glide install
```This will install all the project dependencies in the `vendor` folder.
As of **Golang 1.6** `vendor` folder is automatically added the the `$GOPATH` during build process.### Build
#### Manually
```bash
[abenseddik@macpro] go build -o build/quasar
```#### Using the `Makefile`
- Use the `make` target `quasar` :
```bash
[abenseddik@macpro] make quasarmkdir -p build
go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/share/gocode:/home/abenseddik/gocode"
GORACE=""
GOROOT="/usr/lib/golang"
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
go build -ldflags="-w" -o build/quasar
```The built binary is in the `build` folder.
```bash
[abenseddik@macpro] ll build/quasar
-rwxr-xr-x 1 amine staff 12M Apr 21 15:38 quasar
```Golang produces a static binary with all the dependencies and the Golang runtime embedded.
#### Build the RPM
- Use the `make` target `rpm` to build the rpm package :
```bash
[abenseddik@macpro] make clean-all
[abenseddik@macpro] make rpm
...
go build -ldflags="-w" -o build/quasar
mkdir -p tmp/
rm -rf tmp/quasar
mkdir -p tmp/quasar/
cp build/quasar tmp/quasar/quasar
cp quasar.json tmp/quasar/quasar.json
cd tmp && tar czf quasar.tar.gz quasar/
chmod +x deploy/buildrpm.sh
cp deploy/buildrpm.sh tmp/buildrpm.sh
cd tmp && ./buildrpm.sh ../deploy/quasar.spec.centos `../build/quasar version`
...
cp tmp/rpm/RPMS/x86_64/quasar-*.rpm build/
```The resulting RPM is in the build folder :
```bash
[abenseddik@macpro] ls build
total 30256
-rwxr-xr-x 1 amine staff 12M Apr 21 15:38 quasar
-rw-r--r-- 1 amine staff 3.3M Apr 21 15:38 quasar-0.3.1-1.el7.x86_64.rpm
```#### RPM Info
```bash
[abenseddik@macpro] rpm -qp --info build/quasar-0.3.1-1.el7.x86_64.rpm
Name : quasar
Version : 0.3.1
Release : 1.el7
Architecture: x86_64
Install Date: (not installed)
Group : default
Size : 12071752
License : MIT License
Signature : (none)
Source RPM : quasar-0.3.1-1.el7.src.rpm
Build Date : Fri 21 Apr 2017 03:38:11 PM CEST
Build Host : buildvm.centos73-2.golang.lab
Relocations : (not relocatable)
Packager : Amine Benseddik
URL : https://github.com/amine7536/quasar
Summary : Collects BGP events from Peers and sends them to Logstash
Description :
Most astronomers think a quasar is a black hole with matter falling into it.
Quasar collects BGP events from Peers and sends them to multiple outputs (Stdout, Logstash ...)
```#### RPM Files
```bash
[abenseddik@macpro] rpm -qlp build/quasar-0.3.1-1.el7.x86_64.rpm
/etc/quasar/quasar.json
/etc/sysconfig/quasar
/usr/bin/quasar
/usr/lib/systemd/system/quasar.service
```## Configuration
### Sample configuration file
```
{
"routerid": "10.2.2.2",
"asn": 65001,
"api": false,
"logs": {
"level": "debug",
"file": "quasar.log",
"format": "text"
},
"neighbors":[{
"address": "10.2.2.3",
"asn": 65000
}],
"outputs": {
"logstash": {
"host": "10.2.2.4",
"port": "3000"
}
}
}
```### Usage
```
/usr/bin/quasar -c quasar-dev.json
```### Installation
Simply copy `build/quasar` on your linux host or use the rpm package :
```bash
[[email protected]] sudo rpm -Uvh https://github.com/amine7536/quasar/releases/download/v0.3.1/quasar-0.3.1-1.el7.x86_64.rpm
Retrieving https://github.com/amine7536/quasar/releases/download/v0.3.1/quasar-0.3.1-1.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:quasar-0.3.1-1.el7 ################################# [100%]
```Edit `/etc/quasar/quasar.json` and adjust the configuration as needed, by default most of the configuration fields are empty then start `quasar` :
```bash
[[email protected]] sudo systemctl start quasar
```Check the status :
```bash
[[email protected]] sudo systemctl status quasar
● quasar.service - Quasar BGP Collector
Loaded: loaded (/usr/lib/systemd/system/quasar.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2017-05-02 12:18:44 UTC; 1s ago
Docs: https://github.com/amine7536/quasar
Main PID: 540 (quasar)
CGroup: /system.slice/quasar.service
└─540 /usr/bin/quasar -c /etc/quasar/quasar.jsonMay 02 12:18:44 buildvm.centos73-2.golang.lab systemd[1]: Started Quasar BGP Collector.
May 02 12:18:44 buildvm.centos73-2.golang.lab systemd[1]: Starting Quasar BGP Collector...```