Amas is a monitor alert system based on big-data platform, with features below:
- Provide metrics in full dimension, covering from operating-system, middleware, big-data platform(Hadoop/Spark/HBase/Kakfa...) to code level.
- Highly extensible collector agent, support custom metrics written by different scripting language(Python/Perl/Shell/...).
- Ability to read/write mass data quickly due to HBase/OpenTSDB on real production environment.
- Web UI is sexy and powerful, yet easy to use.
- Distributed asynchronous alert engine based on Python multiprocess and async/await, which makes it easily extend system processing ability.
- Multi-channel and customizable notify method(wechat/mail/slack/api...).
- Alerts could be aggregated by groups, preventing from "Alert Storm".
- Distributed tracing collect and display based on Jagger, events are traceable.
- Anomaly detection service based on machine learning, landing AIOps.
- Due to micro-service architect, compatibly deploy with docker and docker-compose.
- ...
- Program language:
- (Backend)Python
- (Web)Javascript
- Web Service:
- Vue, ECharts, Webpack
- Express(NodeJS)
- Backend Service:
- HBase, OpenTSDB, MongoDB, Redis
- Spark, Kafka
- Jagger, Tornado
- Pandas, Scikit-learn
- Docker, Swarm
- Linux(Kernel2.6+)
- Centos7(Recommend)
So far, Amas repository is automated build on docker hub, you are recommended to run amas quickly by docker:
- Install Docker
- Create shell script below and execute:
#!/usr/bin/env bash
# create network for amas
docker network create amas
# run databases
# opentsdb(v2.3.0+)
# mongo(v3.10.0+)
# redis(v3.10.0+)
docker run -d -p 4242:4242 --name opentsdb --network amas eacon/docker-opentsdb
docker run -d -p 27017:27017 --name mongo --network amas mongo
docker run -d -p 6379:6379 --name redis --network amas redis
# run collector agent(Agent Manager included):
docker run -d --name collector --network amas -p 8001:8001 eacon/argus_collector
# run alert process
docker run -d --name alert --network amas eacon/argus_alert
# run statistics process
docker run -d --name statistics --network amas eacon/argus_statistics
# run web server
docker run -d --name web --network amas -p 8080:8080 eacon/argus-web
- Visit: open browser(try not to use
localhost
, but127.0.0.1
):http://127.0.0.1:8080 - Init: execute web container to generate default account(username/password: admin/123):
docker exec -it web init_user
With docker-compose installed,you could run amas as below:
- git clone:
git clone https://github.com/amas-eye/amas.git; cd amas/docker/compose/
- Or just get that compose file:
mkdir amas; cd amas; curl https://raw.githubusercontent.com/amas-eye/amas/master/docker/compose/docker-compose.yml > docker-compose.yml
- Execute command to run all containers up:
docker-compose up -d
See more in Metrics.md.
Dashboard
Metric chart view
Alert rules and messages:
Slack notification:
Tracing display:
- Web server: argus-web
- Backend:
- Collector: argus_collector
- Alert: argus_alert
- Tracing: argus_chain
- Statistics: argus_statistics
- AIOps: argus_aiops
Amas is maintained by @Eacon and his develop team, see more in AUTHORS.
- Amas' code name is "argus", and this would be reserved in source code.
- Support DSL defined rules in alert engine
- Integrate with Zabbix, Nagios...
- Java bytecode injection based on AspectJ
- Python bytecode injection based on pyrasite
- Landing more AIOps...